Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 15.04.2013 08:50:41

Anton

Автоматическое заполнение форм

Не могу найти какое-либо обсуждение или примеры, где есть автозаполнение форм.

Например. Есть форма для нового пользователя с именами полей - 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, но поля остаются пустыми.

Спасибо
Антон

#2 15.04.2013 11:38:20

Re: Автоматическое заполнение форм

PHP
$formInput = array('login' => 'social_login''first_name' => 'Social', ...);
return 
Redirect::to('url')->with(Input::old_input$formInput);

Не в сети

#3 15.04.2013 13:32:29

Anton

Re: Автоматическое заполнение форм

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

пустые поля

#4 15.04.2013 13:34:54

Anton

Re: Автоматическое заполнение форм

там опечатка - first_name - это должно быть, firstname, конечно же.
в любом случае - поля пустые получаются

#5 15.04.2013 14:54:18

Re: Автоматическое заполнение форм

Поясню, что делает мой код. В Laravel есть понятие «старый ввод» — PHPInput::old('field'), устанавливается PHPInput::flash('field''value'). Этот метод сохраняет старый ввод в переменной сессии PHPInput::old_input (константа).

Соответственно, чтобы ввод появился в твоей форме тебе нужно его туда вставить через PHPInput::old(). Сейчас у тебя простые вызовы PHPForm::text('firstname'), что выводит xml<input type="text" name="firstname" value="">. Чтобы заполнить value передай два параметра:

PHP
Form::text('firstname'Input::old('firstname'));

Не в сети

#6 15.04.2013 15:23:27

Anton

Re: Автоматическое заполнение форм

так заработало.
Просто в формах,которые я уже использовал, хватало указания with_input (Например, после не успешной валидации), без добавления в каждое поле идентификатора Input::old(fieldname).

Спасибо

#7 15.04.2013 15:32:53

Re: Автоматическое заполнение форм

  1. Просто в формах,которые я уже использовал, хватало указания with_input (Например, после не успешной валидации), без добавления в каждое поле идентификатора Input::old(fieldname).

Я бы удивился, если бы оно так работало. По крайней мере в Laravel 3 этого нет.

Не в сети

#8 01.05.2013 11:17:59

vanchelo
Откуда: Украина, Киев
Сообщений: 32
Сайт

Re: Автоматическое заполнение форм

Такая возможность есть в ZF2, странно что в ларавел её не добавили, очень удобная плюшка

Не в сети

Подвал раздела