Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Не могу найти какое-либо обсуждение или примеры, где есть автозаполнение форм.
Например. Есть форма для нового пользователя с именами полей - login, first_name, last_name, email, password (например). Есть возможность как просто заполнить форму, но хотелось бы, частично заполнять форму, если человек пошел через соц сети. Я ловлю такой вход в роутах и вижу, что есть поля user_first_name, user_last_name, user_email. Теперь хочется сделать редирект на страницу с формой и что бы поля first_name, last_name, email были бы уже заполнены.
Как это сделать? Пытался добавить переменных в сессию Session::put("first_name", user_first_name), а в форме брать через input::old, но поля остаются пустыми.
Спасибо
Антон
$formInput = array('login' => 'social_login', 'first_name' => 'Social', ...);
return Redirect::to('url')->with(Input::old_input, $formInput);
Не в сети
signup.blade.php
@layout('templates.main')
@section('content')
{{ Form::open('signup') }}
<!-- check for login errors flash var -->
@if (Session::has('input_errors'))
<span class="error">Wrong fields</span>
@endif
<!-- username field -->
<p>{{ Form::label('username', 'Username') }}</p>
<p>{{ Form::text('username') }}</p>
<!-- password field -->
<p>{{ Form::label('password', 'Password') }}</p>
<p>{{ Form::password('password') }}</p>
<p>{{ Form::label('email', 'Email') }}</p>
<p>{{ Form::email('email') }}</p>
<p>{{ Form::label('firstname', 'First name') }}</p>
<p>{{ Form::text('firstname') }}</p>
<p>{{ Form::label('lastname', 'Last name') }}</p>
<p>{{ Form::text('lastname') }}</p>
<!-- submit button -->
<p>{{ Form::submit('Sign up') }}</p>
{{ Form::close() }}
@endsection
routes.php
Route::post('/', function() {
$socialarray = array('username' => 'AAAAA', 'first_name' => 'XXXX');
return Redirect::to('signup')->with(Input::old_input, $socialarray);
}
....
Route::any('signup', array('as' => 'signup', 'uses' => 'account@signup'));
пустые поля
там опечатка - first_name - это должно быть, firstname, конечно же.
в любом случае - поля пустые получаются
Поясню, что делает мой код. В Laravel есть понятие «старый ввод» — PHPInput::old('field')
, устанавливается PHPInput::flash('field', 'value')
. Этот метод сохраняет старый ввод в переменной сессии PHPInput::old_input
(константа).
Соответственно, чтобы ввод появился в твоей форме тебе нужно его туда вставить через PHPInput::old()
. Сейчас у тебя простые вызовы PHPForm::text('firstname')
, что выводит
xml<input type="text" name="firstname" value="">
. Чтобы заполнить value передай два параметра:
Form::text('firstname', Input::old('firstname'));
Не в сети
так заработало.
Просто в формах,которые я уже использовал, хватало указания with_input (Например, после не успешной валидации), без добавления в каждое поле идентификатора Input::old(fieldname).
Спасибо
Не в сети
Такая возможность есть в ZF2, странно что в ларавел её не добавили, очень удобная плюшка
Не в сети
Страницы 1