我正在考虑从主页制作一个登陆页面,这将引导访客进入注册页面。我想制作两个用于发送数据的表单和其中的两个提交按钮,假设读者和作者,根据他们用来转到注册表单页面的按钮,我想传递 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
。但当我直接输入链接时它就起作用了。
我的想法是在 /auth/register/
中使用 $profession
并访问该值并将其用作注册表单中的隐藏字段。
(使用 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 Collective 包,因为您使用了大括号和感叹号。
第 1 步:
在有“编写器”按钮的着陆页 View 中,添加一个带有字符串“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文件中注册一个路由和一个 Controller ,如下所示:
Route::post('auth/register', [
'as' => 'writer_path',
'uses' => 'SampleController@displayForm'
]);
第 3 步:
在示例 Controller 中,您定义了 displayForm 方法。 在该方法中,您首先获取从着陆页 View 传递的值。
如果您不知道如何创建 Controller ,您可以这样做
php artisan make:controller SampleController
从命令行
因为该值以数组形式到达,所以您必须从数组中获取字符串“writer”,然后将其传递给新 View (带有 writer 注册表单的 View )。
<?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 的新 View 中,您将显示带有刚刚传递的字段(“profession”)的表单,其中包含字符串“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() !!}
很快,您已经使用属于登陆页面中的作家按钮的隐藏字段的信息填充了作家注册表中的字段。
关于php - Laravel 将数据从一个 View 传递到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756318/