Skocz do zawartości
  • Zarejestruj się
  • 0
Mateusz_K

Dodanie value do inputa

Pytanie

Hej, mam takie pytanko. Czy istnieje możliwość dodania wartości value do inputa w szablonie recordForm ? 

Cały input jest wyświetlany poprzez {$input|raw} . Jak zrobie {$input->value} to wyświetla pustą wartość - czyli okej, bo wartość jest pusta. Ale chcę tam wstawić swoją wartość, ale nie wiem czy jest taka możliwość ? Robiłem tak : {{$input->value = $model;}} . Ale nie działa coś takiego. 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Polecane posty

  • 0

Tego tak nie powinieneś robić, tylko zrobić to w kodzie jak już. Szablon jest do wyświetlania nie do modyfikowania wartości

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

W sumie, to edytuj to pole w acp i tam masz opcję domyślnej wartości.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Ale ja nie chcę na sztywno tego zrobić, tylko pobierać chcę to z GETa i jeżeli istnieje jakaś wartość w parametrze to ma wstawić do inputa tą wartość. 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

No to powinieneś to hookiem zrobić, tak, żeby w formularzu to ustawić jako 2 parametr inputa. Bo w ten sposób nie przypiszesz wartości

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Czy mógłbyś mnie nakierować jak mógłby wyglądać taki hook ? Muszę tworzyć jakieś dodatkowe widoki np. inputy ? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Tutaj nie da się zbtnio nakierować. Trzeba pokombinować i poszukać... Ogólnie zasada jest taka, że jak tworzysz inputa czyli:

new \IPS\Helpers\Form\Number()

to pierwszym parametrem jest jego nazwa i zarazem zasób językowy, natomiast 2 parametr to wartość domyślna jaka ma być wstawiona do pola

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

A jak nie chcę wpisywać tam domyślnej wartości, tylko żeby pobierało tą wartość z parametru GET ? To normalnie tam robie cos takiego jak $_GET['name'] ? Bo ogólnie chodzi mi o to, że mam jakąś opinie o danym modelu i chcę dorobić przycisk Dodaj opinię (o tym modelu) i wtedy ma przenieść do formularza dodawania opinii, ale w modelu już ma się wpisać wartość z parametru GET, czyli w tym przypadku nazwa modelu. 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0
11 minut temu, Mateusz_K napisał:

A jak nie chcę wpisywać tam domyślnej wartości, tylko żeby pobierało tą wartość z parametru GET ? To normalnie tam robie cos takiego jak $_GET['name'] ? Bo ogólnie chodzi mi o to, że mam jakąś opinie o danym modelu i chcę dorobić przycisk Dodaj opinię (o tym modelu) i wtedy ma przenieść do formularza dodawania opinii, ale w modelu już ma się wpisać wartość z parametru GET, czyli w tym przypadku nazwa modelu. 

tak to dajesz normalnie:

\IPS\Request::i()->name

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Ok, a jak później w szablonie mam odebrać ten mój stworzony input ? Czy on już automatycznie będzie widoczny ? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

no musisz nadpisać hookiem właśnie ten właściwy, który masz teraz... dlatego nie jestem w stanie Cię nakierować w 100%

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Rozumiem, a jak mam wykryć który to jest właściwy ? Wystarczy, że rozszerzę klasę o tę bazę w której jest ten formularz? Czy coś więcej trzeba ? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Powinno wystarczyć

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Ok mam coś takiego : 

//<?php

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

class hook66 extends _HOOK_CLASS_
{
	if(static::$customDatabaseId == 26) {
    	$form = new \IPS\Helpers\Form\Number('topic_title', $defaultValue='test');
    }

}

Czy coś takiego jest ok ? Podejrzewam, że pewnie nie do końca. Czego tu jeszcze brakuje ? Jak mogę zwrócić teraz ten input ? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Teraz to przypisujesz inputa do formularza. Nie wiem na co zrobiłeś tego hooka, ale zazwyczaj musisz mieć jakąś metodę tam typu public static function formElements() i tam wtedy nadpisujesz jakieś pole ale nie poprzez $defaultValue='test' bo to przypisanie do zmiennej jest, po prostu wstawiasz tam 'test' i już

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Masz może jakiś przykład jak to powinno wyglądać ? Bo nie do końca wiem o co chodzi z tym 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0
    /**
     * 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 )
    {
        $parentReturn = parent::formElements( $item, $container );

        $parentReturn[ 'title' ]     = new \IPS\Helpers\Form\Text( static::$formLangPrefix . 'title', $item ? $item->mapped( 'title' ) : ( isset( \IPS\Request::i()->title ) ? \IPS\Request::i()->title : null ), false, array( 'maxLength' => \IPS\Settings::i()->max_title_length ? : 255 ) );
        
        ....
        
        return $parentReturn;
    }

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Ok, dodałem taki kod jak wkleiłeś, zamiast ['title'] dodałem nazwę mojego inputa oraz dodałem swój parametr w Request::i() , działa to prawidłowo, czyli dodaje wartość z parametru GET do inputa, ale zamiast dodawać je w moim inpucie, to dodaje nowy na samym końcu 😕 . 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

to zrób sobie var_dump() na $return po parent:: i zobacz jaki klucz ma Twoje pole. Nie zawsze pole będzie miało klucz w tablicy jak nazwa. Równie dobrze może to być klucz 10

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Okazało się, że faktycznie podawałem inną nazwe, wcześniej robiłem content_field_124_values , a w var_dump zwróciło content_field_124 . Zmieniłem to w kodzie, ale niestety dalej dodaje nowe pole 😕 . Może dlatego, że to pole jest typu hidden ? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

ale to co chcesz zrobić. zamienić zwykłe pole, czy ustawić ukrytemu polu wartość? bo to różnica

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Ustawić ukrytemu polu wartość

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

To czemu nie piszesz od początku? To musisz na obiekcie form robić

$form->hiddenValues[ 'KLUCZ' ] = 'WARTOŚĆ';

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Nie działa dalej. Dodałem cos takiego : 

$form = new \IPS\Helpers\Form;
$form->hiddenValues['myField'] = 827;

Ale nic sie nie dodaje. Tamten kod wcześniejszy mam zostawić czy jak ? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Tamto jest zbędne. tutaj nie tworzysz obiektu formularza, tylko musisz się podczepić gdzie indziej. tam gdzie masz już formularz dodawania jakiś kontroler submit albo coś

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

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

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.