Laravel 5.3:布局视图中的路由

Posted

技术标签:

【中文标题】Laravel 5.3:布局视图中的路由【英文标题】:Laravel 5.3: Routes in layout views 【发布时间】:2017-04-06 18:56:54 【问题描述】:

菜单中的链接有问题。

目前,视图之间的链接是通过控制器控制的视图内部的链接完成的。

例如,在这个视图中,

我们有公司的展示视图。

“Edit About Page Tiago”链接如下所示:

<p><a href="route('company.companies.about.edit', $company->companyID)">Edit About Page $company->Company_Name</a></p>

$company->companyID 正在从控制器中被抓取,如下所示:

public function show($id)
    
        //

        $company = Company::findOrFail($id);

        return view('company.companies.show', compact('company'));

    

并且有以下路线:

GET|HEAD  | company/companies/company | company.companies.show | App\Http\Controllers\CompanyCompaniesController@show | web,company   

GET|HEAD  | company/companies/about/about/edit | company.companies.about.edit | App\Http\Controllers\CompanyAboutController@edit | web,company   |

目前,当我尝试通过菜单访问“关于”时,我正在尝试访问:

        <li>
            <a href="route('company.companies.about.edit', $company->companyID)"><i class="fa fa-dashboard fa-fw"></i> About</a>
        </li>

这是布局视图内的代码。出现以下错误:

我可以做什么,一旦按下“关于”,以与“编辑关于页面 Tiago”相同的方式重定向?

以另一种方式询问,如果 $company 变量在布局视图内而不是在我可以通过控制器执行的普通视图中,我在哪里可以将信息提供给 $company?

这可能是一个需要解决的基本问题,但不知何故阻碍了我。

感谢任何给定的帮助

蒂亚戈

【问题讨论】:

尝试转储控制器中的公司变量(var_dump($name_of_variable)) 什么意思?到哪个控制器?因为是布局视图。这个具体案例是怎么做的? 您可以参考与所有视图共享数据部分中的Data With All Views!希望有帮助 它给出了一些方向,让我们看看能用它做什么,谢谢! 不要在帖子标题中添加[solved]。问题不需要这样标记。如果您找到了自己的解决方案,请随时将其作为答案发布在下面,或者如果其中一个答案有助于为您解决问题,请考虑将该答案标记为已接受。否则,您无需执行任何操作。请记住,问题和答案是为未来的访问者准备的,他们会自行决定什么是有帮助的,或者他们是否找到了解决方案,届时他们是否会发布新的答案. 【参考方案1】:

正如@Maraboc 所说,您可以在服务提供商中share data with all your views,但为了做到这一点,您需要在引导过程中提前知道/设置值。此功能通常用于您想要在数据库中或通过某种自定义 CMS 管理的全局值,例如基本标题、元标记等。

还有另一种使用 View Composers 在视图之间共享变量的方法,这可能更适合您的用例。

【讨论】:

看看它的atm,会让你知道它是怎么回事。不过看起来是个不错的解决方案 很抱歉尚未使用此解决方案使其工作。将在接下来的 3 小时内再次尝试,并告诉您进展如何。不过,任何帮助都会非常棒。【参考方案2】:

我遇到了同样的问题。我使用的方法与默认 route 不同。在我看来,

<a href="editcompany?id=$company->companyID" class="btn btn-xs btn-info" >EDIT </a>

在我的route.php 我有

Route::get('editcompany','CompanyController@edit');

在我的控制器中,编辑功能是这样的

public function edit()


    $id = Input::get('id');
    $company = Company::find($id);
    return view ('your view',compact('company'));

【讨论】:

找到这个链接,它可能有一些很棒的信息。试图从中提取一些“汁液”。 ***.com/questions/28608527/… 目前,虽然大约:1-使用工匠创建提供程序 2-在 boot() 方法中使用公司信息。为什么这不起作用:我们将尝试在数据库记录存在之前获取它们(lorey 2015 年 10 月 4 日 21:41)(它有 6 个赞成票)

以上是关于Laravel 5.3:布局视图中的路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 - InvalidArgumentException 视图 [索引] 未找到 [重复]

laravel-5.3 路由配置

Laravel 5.3 登录路由 - RouteCollection.php 中的 NotFoundHttpException

将Javascript变量传递给laravel 5.3中的路由

在 Laravel 5.3 的中间件中访问路由 URL 参数

如何在 Laravel 5.3 中获取当前的语言环境