gpt4 book ai didi

php - Laravel 路由到相同 View 不同功能

转载 作者:行者123 更新时间:2023-11-29 12:17:16 26 4
gpt4 key购买 nike

我正在尝试使用 Chumper 将 MySQL 数据库中的值返回到数据表中。我正在尝试从 2 个表中获取值;但我遇到了我认为是路由问题,因为我不知道如何将 2 个 Controller 功能包含到同一个 View 中,即在我的搜索 View 中,我想呈现 2 个功能的结果,例如:为了更深入地了解我的内容我正在尝试完成查看问题:Laravel Chumper Datatable getting data into one datatable from multiple MySQL tables

Route::get('search', array('as' => 'instance.search', 'uses' => 'CRUDController@instances'));
Route::get('search', array('as' => 'accid.search', 'uses' => 'CRUDController@account_ids'));

有什么想法吗?

最佳答案

只有一个路由会匹配系统请求的任何给定 URL。我相信 Laravel 会做的是选择第二个(因为第二个定义将覆盖第一个)。

您在这里有一些选择。我从你的问题中真正可以看出的是,当该路由被命中时,你希望执行两个方法。这是间接可能的,请考虑:

Route::get('search', 'MyController@instances');

class MyController extends Controller
{
public function instances()
{
$mydata = $this->account_ids();
$myotherdata = $this->getOtherData();

return View::make('myview')
->with('mydata', $mydata)
->with('myotherdata', $myotherdata);
}

private function getOtherData() { /* ... */ }
}

不过,这并不是很干净,最终会导致复杂的 Controller 逻辑,这是 MVC 中的反模式。幸运的是,Laravel 让你使用 View Composers ,这可以极大地清理你的 Controller 逻辑:

public function instances()
{
return View::make('myview');
}

哇。又好又简单。现在是 View 编辑器部分:

// Inside of a service provider...
View::composer('search', 'App\Http\ViewComposers\AViewComposer');

use View;
class AViewComposer
{
public function compose(View $view)
{
$view->with('instances', $this->instances());
$view->with('accountIds', $this->accountIds());
}

public function instances()
{
// generate your instance data here and return it...
return $instances;
}

public function accountIds()
{
// generate your account id data here and return it...
return $accountIds;
}
}

如果您在其他地方需要相同的功能,您可以更进一步,将另一个类注入(inject)到该 View 编辑器的构造函数中,以完全减轻确定“实例”和“帐户 ID”实际含义的责任。这将帮助您保持代码极其干燥。

关于php - Laravel 路由到相同 View 不同功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29608909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com