1

我使用 Jeffrey Ways Generator 通过脚手架命令生成一些代码。我对 OOP、框架和 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'));
        }
    }

一切都按我的意愿工作,但这是正确的做事方式吗?

4

1 回答 1

1

show()如果设置了 Input::get('id'),而不是从方法重定向到,您应该通过更改 URLindex()将表单直接提交到方法。show

{{ Form::open(array('url' => 'tweets/show/', 'method' => 'get')) }}
   {{ Form::text('id') }}  
{{ Form::close() }}

确保在以下位置设置一条到 tweets/show/ 的路由app/routes.php

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>
于 2013-05-12T17:24:42.560 回答