Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Wstawienie value do input


Sebaa

Rekomendowane odpowiedzi

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="">

Odnośnik do komentarza
Udostępnij na innych stronach

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';
           
          }
      }
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

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"?

Edytowane przez BitGit
Odnośnik do komentarza
Udostępnij na innych stronach

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.

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

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. 

 

Edytowane przez BitGit
  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

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.

Edytowane przez Sebaa
Odnośnik do komentarza
Udostępnij na innych stronach

<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.

Odnośnik do komentarza
Udostępnij na innych stronach

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

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

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;
	}

 

  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Odnośnik do komentarza
Udostępnij na innych stronach

//<?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

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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ć?

Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
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.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
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.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.