首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel路径动态路径控制器到叶片模板

Laravel路径动态路径控制器到叶片模板
EN

Stack Overflow用户
提问于 2014-03-16 12:09:29
回答 2查看 5.6K关注 0票数 1

如何使控制器显示在我的刀片布局?

我有从MySQL导入的250个动态路径。它们是使用以下控制器产生的。

代码语言:javascript
复制
public function registerTuningRoutes()
{
   // $tunings = Tuning::all(); // Assume that you have a model Tuning

    // Or you may use this instead
    $tunings = DB::table('guitar_tunings_links')->get();

    // Now loop all tunings and declare routes
    foreach($tunings as $tuning)
    {
        $url = '/tuning/' . $tuning->tuning;
        $route_name = 'tuning.' . $tuning->tuning;
        Route::any($url, $route_name); // You may use get/post
    }
}

public function TuningMethod($tuning = null)
{
    // $tuning will contain the current tuning name, check
    $tuning_name = ($tuning);
    $tuning_name = strtoupper($tuning_name);
    $user = DB::table('guitar_tunings_links')->where('tuning', $tuning_name)->first();

    echo "<div class=\"panel panel-default\">
      <div class=\"panel-heading\">$user->name - $tuning_name</div>
      <div class=\"panel-body\">
        $user->description
      </div>
    </div>";

}

这是我的路线..。

代码语言:javascript
复制
Route::any('{field}', 'TuningController@TuningMethod');

App::make('TuningController')->registerTuningRoutes();

这个控制器和路由给了我类似于这个laravel.dev/eadgbe的URL,它也返回关于吉他调优的所有数据,但是它并不驻留在我的模板系统中。没有使用样式或布局。

我这里有一个刀片模板app/view/home/tuning.blde.php

我的控制器工作得很好。它从DB中获取Guitar调优的名称,并从它创建一个路由,并从该行中打印出所需的数据。

我的问题是,我无法获得控制器的输出和成为tuning.blade.php模板一部分的路由。

我尝试过添加以下几条路线

代码语言:javascript
复制
// Route 1
Route::get('tuning/{field}', function(){
    return View::make('home.tuning.{field}')
});

// Route 2
Route::get('tuning/{field}', function(){
    return View::make('home.{field}')
});

我已经在Laravel文档部分广泛地阅读了有关路由控制器的文章,但是我觉得我不理解它,或者我遗漏了一些简单的东西。

此外,我还发现了这篇关于预先路由http://daylerees.com/codebright/advanced-routing的文章,并试图理解并实现它,但没有用。

有人能帮我弄清楚怎么解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-17 15:45:33

您不需要按照您所做的方式注册所有的路由,因为它们只能作为一条路由来解决。据我所知,这个命令什么也没做:

代码语言:javascript
复制
Route::any($url, $route_name);

因为它不是指向控制器,它只是指向一个名称tuning.something,这对Laravel路由器系统没有任何意义。因此,实际上,整个registerTuningRoutes函数都是一事无成。但是你已经有了一条工作路线,它做了所有的工作:

代码语言:javascript
复制
Route::any('{field}', 'TuningController@TuningMethod');

话虽如此,看来您可以削减一些代码,只需保留这条路线:

代码语言:javascript
复制
Route::any('{field}', 'TuningController@TuningMethod');

您的控制器方法已经在工作,但必须更改以直接呈现视图:

代码语言:javascript
复制
<?php

public function TuningMethod($tuning = null)
{
    // $tuning will contain the current tuning name, check
    $tuning_name = ($tuning);
    $tuning_name = strtoupper($tuning_name);
    $user = DB::table('guitar_tunings_links')->where('tuning', $tuning_name)->first();

    return View::make('home.tuning')->with('user', $user)->with('tuning_name', $tuning_name);
}

app/views/home/tuning.blade.php文件可以类似于:

代码语言:javascript
复制
@extends('layout')

@section('content')
    <div>
        You HTML here to beautifully render your page.

        This is your tunning details:
        <div class="panel panel-default">
            <div class="panel-heading">$user->name - $tuning_name</div>
            <div class="panel-body">
                $user->description
            </div>
        </div>
    </div>
@stop

您应该有一个app/views/layout.blade.php文件,用一个HTML和body标记包装它:

代码语言:javascript
复制
<html>
<body>
    @yield('content')
</body>
</html>
票数 5
EN

Stack Overflow用户

发布于 2014-03-17 15:57:47

我看到了您在代码的最后部分尝试的内容(生成动态路由)。我真的很兴奋在我的身边测试它,并试图有相同的路线,但它没有工作。我做了以下修改以使它正常工作。我希望这些改变会有任何帮助。

如果我弄错了你的问题,请原谅我。

代码语言:javascript
复制
// Routes.php
Route::get('testCall/{testVariable}', array(
    'as' => 'test', // This is the name of your route
   'uses' => 'Parekhchintan30\Test\TestController@testFunction'
 )); 
// TestController.php
public function testFunction($testVariable){
return View::make('test::'.$testVariable); // obviously you will need a view with that name
}//test is the name of my package in this case
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22436637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档