Laravel Передача данных из одного вида в другой вид

Я собираюсь сделать целевую страницу с домашней страницы, которая будет направлять гостя на страницу регистрации. Я думал о создании двух форм для отправки данных и двух кнопок отправки в них, скажем, читателя и писателя, и в соответствии с кнопкой, которую они используют, чтобы перейти на страницу формы регистра, я хочу передать строку 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, вы заполнили поле в регистрационной форме для автора с информацией о скрытом поле, которое принадлежало кнопке записи на целевой странице.