Laravel 5.3:布局视图中的路由

10 浏览
0 Comments

Laravel 5.3:布局视图中的路由

菜单中的链接出现问题。

目前,视图之间的链接是通过由控制器管理的视图内的链接来实现的。

例如,在这个视图中,

here

我们有公司的显示视图。

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

Edit About Page {{$company->Company_Name}}

其中$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   |

目前,当我尝试通过菜单访问“About”时,我试图访问如下内容:

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

    here

    当按下“About”时,我应该怎么做才能像“Edit About Page Tiago”那样重定向?

    换句话说,如果该变量位于布局视图而不是普通视图中,我应该在哪里提供$company的信息?

    这可能是一个基本的问题,但是它阻碍了我。

    感谢任何给予的帮助。

    Tiago

    0
    0 Comments

    在这个问题中,出现的原因是视图中使用了不同于默认route的方法。在视图中,使用了以下代码:

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

    而在route.php文件中,有以下代码:

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

    在控制器中,编辑功能的代码如下:

    public function edit()
    {
        $id = Input::get('id');
        $company = Company::find($id);
        return view ('your view',compact('company'));
    }
    

    作者在stackoverflow上找到了一个链接,可能有一些很好的信息。作者考虑了以下解决方法:

    1. 使用artisan创建一个提供者

    2. 在boot()方法中使用公司信息

    但是这种方法不起作用的原因是在数据库记录存在之前我们尝试获取数据库记录(lorey Oct 4 '15 at 21:41)(它有6个赞同)。

    0
    0 Comments

    问题的出现原因:

    问题是因为在Laravel 5.3版本中,想要在布局视图中使用路由需要提前知道或设置值,并在引导过程中共享数据。这在处理全局值时非常有用,比如基本标题、元标签等,这些值可能需要在数据库或通过某种自定义CMS中进行管理。

    解决方法:

    除了在服务提供者中共享数据以外,还可以使用视图组成器(View Composers)来在视图之间共享变量。视图组成器可以更好地适应您的使用情况。

    代码:

    View::composer('layout', function ($view) {
        $view->with('key', 'value');
    });
    

    这是一种更灵活的方法,可以让您在渲染特定视图时动态地共享数据。

    0