我使用Jeffrey Ways Generator通过scaffold命令生成一些代码。 我是OOP,Frameworks和Laravel的新手。我有一个工作方法,但只是想知道它是否是正确的方法。
所以基本上我想通过输入框搜索我的模型。
在模型的index.blade.php中,我将此代码放在页面顶部。
{{ Form::open(array('url' => 'tweets/', 'method' => 'get')) }}
{{ Form::text('id') }}
{{ Form::close() }}
现在我的推文控制器中有这个
public function index()
{
if(Input::get('id'))
{
return Redirect::action('TweetsController@show', array(Input::get('id')));
}
else
{
$tweets = $this->tweet->all();
// print_r($tweets);
return View::make('tweets.index', compact('tweets'));
}
}
一切都按照我希望的方式运作,但这是正确的做事方式吗?
答案 0 :(得分:1)
如果设置了Input :: get('id'),则不应该从show()
方法重定向到index()
,而是应该通过更改方式将表单直接提交到show
方法URL。
{{ Form::open(array('url' => 'tweets/show/', 'method' => 'get')) }}
{{ Form::text('id') }}
{{ Form::close() }}
确保在app/routes.php
中设置推文/ show /的路线:
Route::get('/tweets/show', 'TweetsController@show');
可能是更好的解决方案:
如果表单仅作为显示特定推文的链接(通过ID),则最好将路由和show()
方法设置为:
Route::get('/tweets/show/{id}', 'TweetsController@show');
然后将show()
文件中的TweetsController
功能更改为:
public function show($id)
{
// Load the tweet using $id as ID instead of Input::get('id')
}
从那时起,您只需创建一个普通链接(使用URL中的ID)即可链接到它:
<a href="{{ URL::to('tweets/show/'.$tweet->id) }}">View tweet</a>