Я собираюсь сделать целевую страницу с домашней страницы, которая будет направлять гостя на страницу регистрации. Я думал о создании двух форм для отправки данных и двух кнопок отправки в них, скажем, читателя и писателя, и в соответствии с кнопкой, которую они используют, чтобы перейти на страницу формы регистра, я хочу передать строку profession
из кнопки на целевой странице а затем поместите его в регистрационную форму в /auth/register
.
{!! Form::open(array('url' => '/auth/register', 'profession' => 'writer')) !!} {!! Form::submit('Writer', array('class' => 'btn btn-warning')) !!} {!! Form::close() !!} {!! Form::open(array('url' => '/auth/register', 'profession' => 'reader')) !!} {!! Form::submit('Reader', array('class' => 'btn btn-default')) !!} {!! Form::close() !!}
Это не направляет меня на страницу app.com/auth/register
. Но он работает, когда я напрямую набираю ссылку.
Я думал, что использовал $profession
в /auth/register/
и получил доступ к значению и использовал его как скрытое поле в форме регистрации.
(используя laravel 5.1)
Редактировать:
Источник:
<form method="POST" action="http://app.com/auth/register" accept-charset="UTF-8" profession="writer"><input name="_token" type="hidden" value="dZXQsNI1BGQ39JjDLFUEkSQzL5bTNwe8o3rpiSQL"> <input class="btn btn-warning" type="submit" value="Writer"> </form> <form method="POST" action="http://app.com/auth/register" accept-charset="UTF-8" profession="reader"><input name="_token" type="hidden" value="dZXQsNI1BGQ39JjDLFUEkSQzL5bTNwe8o3rpiSQL"> <input class="btn btn-default" type="submit" value="Reader"> </form>
Изменить 2:
{!! Form::open(array('url' => '/auth/register', 'profession' => 'writer')) !!} {!! link_to('/auth/register', 'Writer', array('class' => 'btn btn-default')) !!} {!! Form::close() !!}
Я попробовал это вместо этого. По крайней мере, теперь он направляет страницу, но я до сих пор не могу получить доступ к значению данных profession
Редактировать 3:
Маршруты:
Route::get('auth/register', 'Auth\AuthController@getRegister'); Route::post('auth/register', 'Auth\AuthController@postRegister'); Route::get('/', function() { return view('pages.home'); });
и https://app.com/auth/register
работает.
Вот пошаговое руководство по его внедрению. Я протестировал его. Так оно и работает. Это для «писателя», но вы можете повторить его, как вы изначально планировали для других профессий.
Я предполагаю, что вы зарегистрировали коллекционный пакет Laravel, так как вы используете фигурные скобки и восклицательные знаки.
Шаг 1:
В окне целевой страницы, где у вас есть кнопка записи, добавьте скрытое поле со строкой «writer». Как это:
{!! Form::open(['route' => ['writer_path']]) !!} {!! Form::hidden('profession', 'writer') !!} {!! Form::submit('Writer', array('class' => 'btn btn-warning')) !!} {!! Form::close() !!}
Не то, что в открытом поле мы используем именованный маршрут ('writer_path').
Шаг 2:
Зарегистрируйте маршрут и контроллер в файле routes.php, например:
Route::post('auth/register', [ 'as' => 'writer_path', 'uses' => 'SampleController@displayForm' ]);
Шаг 3:
В вашем тестовом контроллере вы определяете метод displayForm. В рамках этого метода вы сначала получите значение, которое вы передали из представления целевой страницы.
Если вы не знаете, как создать контроллер, вы можете сделать
php artisan make:controller SampleController
из командной строки
Поскольку значение приходит как массив, вы должны получить строку «writer» из массива, а затем передать ее в новое представление (представление с регистрационной формой для автора).
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Input; class SampleController extends Controller { /** * Display a listing of the resource. * * @return Response */ public function displayForm() { $input = Input::get(); $profession = $input['profession']; return view('writerregistration', ['profession' => $profession]); } }
Последний шаг:
В новом представлении, которое вы создадите как writerregistration.blade.php, вы увидите форму с полем, которое вы только что передали («профессия»), которая содержит строку «writer». Как это:
{!! Form::open() !!} {!! Form::label('username', 'Username:') !!} {!! Form::text('username', null, ['class' => 'form-control']) !!} {!! Form::label('profession', 'Profession:') !!} {!! Form::text('profession', $profession, ['class' => 'form-control']) !!} {!! Form::label('email', 'Email:') !!} {!! Form::text('email', null, ['class' => 'form-control']) !!} {!! Form::label('passowrd', 'Password:') !!} {!! Form::password('password', ['class' => 'form-control']) !!} {!! Form::label('password_confirmation', 'Password Confirmation:') !!} {!! Form::password('password_confirmation', ['class' => 'form-control']) !!} {!! Form::submit('Sign Up', ['class' => 'btn btn-primary']) !!} {!! Form::close() !!}
Presto, вы заполнили поле в регистрационной форме для автора с информацией о скрытом поле, которое принадлежало кнопке записи на целевой странице.