Laravel控制器需要确定是否检测到任何输入

时间:2014-12-05 14:53:38

标签: php post laravel input laravel-4

我在Laravel中创建了一个基本的CRUD控制器,用作非常原始的API。结果是,相同的URL当前用于从Web浏览器查看记录(条目)并通过POST存储记录。现在,我确定是否应该存储或列出所有记录的方式是检测字段' ip'

public function index()
{
    // Store an entry
    if(Input::has('ip'))
    return $this->store();

    // Show entries
    $entries = DesktopEntries::all();
    return View::make('desktopentries')->with('entries', $entries);
}

然而,似乎有时发送数据的应用程序将不具有IP数据。是否有一种更简单的方法可以检测是否存在任何输入而不是检查单个字段?我从各种来源提交了近25个字段,并且不一定是该组中的必填字段。

2 个答案:

答案 0 :(得分:1)

您可以使用Input::all()

$data = Input::all();
foreach ($data as $value) {
    if(!empty($value))
    {
        return $this->store();
    }
}
// Show entries
$entries = DesktopEntries::all();
return View::make('desktopentries')->with('entries', $entries);

但最好的方法是使用单独的网址

答案 1 :(得分:0)

与生活中的所有伟大事物一样,似乎有多种方法可以解决这个问题。为了将此解决方案保留在控制器中,我使用此方法检查请求中是否检测到POST数据。从技术上讲,GET也是如此:。

public function index()
{
    if(Request::isMethod('post'))
    return $this->store();

    // Show entries
    $entries = DesktopEntries::all();
    return View::make('desktopentries')->with('entries', $entries);
}

这也可以通过检查Input :: all()的计数是否大于0来在控制器中完成。

这也可以通过您的路线文件完成。这是我的例子:

Route::get('desktop3', 'DesktopPhController@index');

Route::post('desktop3', 'DesktopPhController@store');

其中@store是创建新记录并侦听输入的函数。