Jump to content

Hosting dHosting.pl - 10% rabat!

Sign in to follow this  
Sebaa

Wstawienie value do input

Recommended Posts

Cześć, próbuję wstawić wartość z geta do inputa jako value w formularzu który dodaje rekordy do bazy czyli jeżeli jest wartość get to dopisuje ją do danego inputa jako value. Wyczytałem, że jedyny sposób żeby tego dokonać to zrobienie hooka, a niestety nie robiłem tego nigdy wcześniej. Odpaliłem dev mod, stworzyłem hooka i nie wiem co dalej.

 

Jaką klasę powinienem rozszerzyć przy tworzeniu hooka? Jakiej metody użyć? Jak mogę się odwołać do tego konkretnego formularza lub inputa? A może jest łatwiejszy sposób niż zrobienie hooka?

 

A to mój input do którego chcę wcisnąć value z GETa:

<input type="hidden" name="content_field_124_values" value="">

Share this post


Link to post
Share on other sites

Niby konkretnie, ale jednak nie do końca. Z czym jest problem? Po kolei.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Mam formularz, który stworzył się automatycznie po dodaniu bazy na stronę. Chciałbym żeby automatyczne wypełniał jednego inputa gdy w get jest jakaś wartość, musi ona trafić do value inputa. Nie wiem jak złapać tego konkretnego inputa i wstawić do niego wartość z GET. Dodam, że input jest type="hidden".

 

Przy tworzeniu pluginu rozszerzam klasę \IPS\cms\Records, próbowałem w sposób jak niżej. Docelowo zamiast '123' miałaby być wartość z GET.

 

//<?php

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	exit;
}

class hook66 extends _HOOK_CLASS_
{

  /**
     * Get elements for add/edit form
     *
     * @param \IPS\Content\Item|NULL $item The current item if editing or NULL if creating
     * @param \IPS\Node\Model|NULL $container Container (e.g. forum), if appropriate
     * @return array
     */

      public static function formElements( $item = 'content_field_124', \IPS\Node\Model $container = null )
      {
          if(static::$customDatabaseId == 111) {
            
          $form = new \IPS\Helpers\Form;
          $form->hiddenValues[ 'content_field_124' ] = '123';
           
          }
      }
}

 

Share this post


Link to post
Share on other sites

Robisz to w aplikacji cms?

Share this post


Link to post
Share on other sites
13 minut temu, BitGit napisał:

Robisz to w aplikacji cms? 

 

Tak mi się wydaje :)

Share this post


Link to post
Share on other sites

Okej. Może dla ułatwienia napisz co chcesz osiągnąć finalnie.

1. Masz formularz, który zawiera jakieś pola do wypełnienia?

2. Po wypełnieniu formularza wartości wpisane w powyższe pola mają pojawić się gdzie - w artykule? 

3. Działałeś z opcjami bazy: "Pola"?

Edited by BitGit

Share this post


Link to post
Share on other sites

Mam formularz, który zawiera parę inputów. Chcę do jednego z nich umieścić wartość podaną z get, żeby był od razu wypełniony po kliknięciu w link kierujący do formularza. Jeden input ma być od razu wypełniony danymi z geta.

 

Innymi słowy, chcę żeby po kliknięciu w link kierujący do formularza, jedno pole było już wypełnione automatycznie tym co sobie podam w GET w linku. Chcę tylko do danego inputa podać value = wartość z GET.

 

 

Share this post


Link to post
Share on other sites

Nie wiem czy do końca Cię rozumiem, wartość GET miałaby być zmienna czy stała? 

Jeśli ma być to stała to podrzucam wzór definiowania domyślnej wartości input na przykładzie Pola bazy danych. W tym przypadku jest to Cena.

 

Definiowanie pola

575876505_Zrzutekranu2019-02-11o09_31_22.thumb.png.c869f4aa134fa92f1a34d33a343f7b46.png

 

Formularz

455041412_Zrzutekranu2019-02-11o09_31_44.thumb.png.c57c8160c3b21419bb26b970f49f1202.png

 

Możesz wybrać rodzaj pola jako wierz z tekstem lub inne. Ponadto możesz zablokować możliość edycji zawartości pola przez użytkownika. 

 

Edited by BitGit
  • Like 1

Share this post


Link to post
Share on other sites

A może przyda się na przyszłość :)

 

Wartość z geta ma być zależna z którego miejsca na stronie klikniemy w link. Jest to dodawanie opinii. Przy przeglądaniu danego modelu i po kliknięciu w link formularza dodania opinii chciałbym żeby automatycznie wpisywało dany model (czyli wartość którą umieszczę sobie w linku w GET) do inputa "nazwa". Z tego co patrzyłem nie da się tego zrobić poziomu edycji bazy, ani przy edycji szablonu formularza. Doczytałem, że jedyne wyjście to hook.

Edited by Sebaa

Share this post


Link to post
Share on other sites

Podaj HTML ze źródła dla tego pola. Tj. id, value etc.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites
<input type="hidden" name="content_field_359_values" value="">
<input
	type="text"
	name="content_field_359"
	value=""
	id="elInput_content_field_359"
	data-ipsContentItem
	data-ipsContentItem-maxItems="1"
	data-ipsContentItem-dataSource="https://www.audiostereo.pl/nowa_opinia_cd.html/?do=form&amp;d=26&amp;_itemSelectName=content_field_359"
	data-ipsContentItem-minAjaxLength="3"
>

Do tych dwóch potrzebuję wstawić wartość z GET. Są one ze sobą powiązane, w tym niżej wybiera się coś z podpowiedzi i dopiero ta wartość trafia do pola hidden. Nie przejdzie dalej jak nie wybierze się nic z listy. Chciałbym jakoś złapać te dwa inputy i wpisać do ich value wartość z GETa.

Share this post


Link to post
Share on other sites

Kumam - podaj adres url (nie z furl) gdzie znajduje się ten formularz.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Docelowo do tego formularza miałby być odnośnik w różnych miejscach na forum z różną wartością w GET (zależną od miejsca w którym klikniemy w link) i chcę zrobić warunek jeżeli jest jakaś wartość GET to wpada ona do value tych dwóch inputów (dwie różne wartości).

 

https://www.audiostereo.pl/opinie_sprzet.html/?do=form&d=10

 

Zrobiłem konto na szybko: TestPi qwe123

 

Share this post


Link to post
Share on other sites

Zaktualizuję deva na localhoście i popatrzę.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Robisz rozszerzenie do: applications/cms/sources/Records/Records.php

    /**
     * Get elements for add/edit form
     *
     * @param    \IPS\Content\Item|NULL    $item        The current item if editing or NULL if creating
     * @param    \IPS\Node\Model|NULL    $container    Container (e.g. forum), if appropriate
     * @return    array
     */
    public static function formElements( $item=NULL, \IPS\Node\Model $container=NULL )
    {

Ta metoda zwraca $formElements, więc dla zwróconej wartości przed przekazaniem jej dalej dajesz tak jak niżej. Przykładowe dwa pola o ID 3 i 4:

2019-02-12_16-04-09.png

 

Kod z testów (na sztywno ww. pliku, ale Ty zrób Plugin):

		if ( \count( $options ) or \count( $toggles ) )
		{
			$formElements['create_record_state'] = new \IPS\Helpers\Form\CheckboxSet( 'create_record_state', $values, FALSE, array(
					'options' 	=> $options,
					'toggles'	=> $toggles,
					'multiple'	=> TRUE
			) );
		}
        
        #elInput_content_field_3
        #elInput_content_field_4
		
        $formElements['field_3']->value = isset( \IPS\Request::i()->ocena ) ? \IPS\Request::i()->ocena : NULL;
        $formElements['field_4']->value = isset( \IPS\Request::i()->poziom ) ? \IPS\Request::i()->poziom : NULL;
        
        return $formElements;
	}

 

  • Like 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites
//<?php

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	exit;
}

class hook72 extends _HOOK_CLASS_
{
	/**
     * Get elements for add/edit form
     *
     * @param \IPS\Content\Item|NULL $item The current item if editing or NULL if creating
     * @param \IPS\Node\Model|NULL $container Container (e.g. forum), if appropriate
     * @return array
     */
	public static function formElements( $item=NULL, \IPS\Node\Model $container=NULL )
	{
      
		if ( \count( $options ) or \count( $toggles ) )
		{
			$formElements['create_record_state'] = new \IPS\Helpers\Form\CheckboxSet( 'create_record_state', $values, FALSE, array(
					'options' 	=> $options,
					'toggles'	=> $toggles,
					'multiple'	=> TRUE
			) );
		}
        
        $formElements['field_124']->value = isset( \IPS\Request::i()->pole ) ? \IPS\Request::i()->pole : NULL;
       	
        return $formElements;

	}
}

 

Niestety nie działa mi to, przy kliknięciu w link formularza wywala błąd:

 

image.thumb.png.fad0c4aaee7e6070339518a91a30441b.png

 

Przy tworzeniu hooka rozszerzam klasę: \IPS\cms\Records. U mnie te pola input są dziwne, podzielona na parę innych. Część z nich ukryta. Niżej screen jak to wygląda, do tych dwóch inputów potrzebuję wstawić dwie różne wartości.

 

ahaa.thumb.jpg.4624617d3008cf0b1b74562e3f4ba038.jpg

Share this post


Link to post
Share on other sites

Dlaczego korzystasz z niezdefiniowanej zmiennej $options?

public static function formElements( $item=NULL, \IPS\Node\Model $container=NULL )
	{
      
		if ( \count( $options ) or \count( $toggles ) )
		{

 


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites
public static function formElements( $item=NULL, \IPS\Node\Model $container=NULL )
	{
 		$options = array();
		$toggles = array();
		$values  = array();
      
		if ( \count( $options ) or \count( $toggles ) )

 

A tak, zdefiniowałem zmienne. Niestety dalej wywala błąd:

 

image.thumb.png.97c7422422b5b5ca4215c967b1a67f78.png

 

Jakieś wartości powinienem tam wpisać?

Share this post


Link to post
Share on other sites

Zrobiłeś tak jak mówiłem?


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Nie wiem co masz na myśli. Napisałeś że u Ciebie działa to napisałem tak samo jak Ty. Wklejam cały kod:

 

//<?php

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	exit;
}

class hook73 extends _HOOK_CLASS_
{
	/**
     * Get elements for add/edit form
     *
     * @param \IPS\Content\Item|NULL $item The current item if editing or NULL if creating
     * @param \IPS\Node\Model|NULL $container Container (e.g. forum), if appropriate
     * @return array
     */
	public static function formElements( $item=NULL, \IPS\Node\Model $container=NULL )
	{
 		$options = array();
		$toggles = array();

      
		if ( \count( $options ) or \count( $toggles ) )
		{
			$formElements['create_record_state'] = new \IPS\Helpers\Form\CheckboxSet( 'create_record_state', $values, FALSE, array(
					'options' 	=> $options,
					'toggles'	=> $toggles,
					'multiple'	=> TRUE
			) );
		}
        
        $formElements['field_124']->value = isset( \IPS\Request::i()->pole ) ? \IPS\Request::i()->pole : NULL;
       	
        return $formElements;

	}
}

 

image.png.678031a4127fe4292e021c6b13eb4169.png

Share this post


Link to post
Share on other sites
W dniu 12.02.2019 o 16:05, DawPi napisał:

Kod z testów (na sztywno ww. pliku, ale Ty zrób Plugin):


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites
5 minut temu, DawPi napisał:

 

 

A to jak mam odpalony tryb deva, wybieram z menu plugins, tworzę nowy i klikam create hook to nie robię pluginu?

 

image.thumb.png.8f65c7137ed66e4652b8d7898c789419.png

image.thumb.png.32095782f1779fe6818e66751c7957df.png

Share this post


Link to post
Share on other sites

Próbuję na różne sposoby niestety nie daje to efektu. Jest jakiś inny sposób na tworzenie pluginów niż ten który opisuję wyżej?

Edited by Sebaa

Share this post


Link to post
Share on other sites

Nie mogę złapać tego konkretnego inputa. Albo podmienia mi nazwę albo tworzy nowy.

Share this post


Link to post
Share on other sites
W dniu 20.02.2019 o 09:13, Sebaa napisał:

A to jak mam odpalony tryb deva, wybieram z menu plugins, tworzę nowy i klikam create hook to nie robię pluginu?

Robisz, ale nie możesz tak wpisać tych zmiennych. Jak do wtorku nie poradzisz sobie to napisz do mnie PW w poniedziałek. Powalczymy. :)


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.