获取url数据以显示在url栏中

时间:2015-03-29 16:06:28

标签: laravel-4

我正在使用Laravel 4,而我正试图让网址栏显示保存在数据库中的文本网址,而不是使用ID。

这是我的routes.php

Route::get('/{id}', function($id = 1){

if(is_numeric($id))
{

    $page = Menu::find($id);
    $action = 'content';
    return App::make('HomeController')->$action($id);
} else {
    $column = 'url';
    $url = Seo::where($column, '=', $id)->get();
    $action = 'show';
    return App::make('HomeController')->$action($url[0]->id);
}   
});

我还使用数据透视表将菜单链接到seo。

Seo模型

<?php

class Seo extends \Eloquent {
protected $fillable = array('url', 'meta_title', 'meta_description', 'keywords');
protected $guarded = array('id');

protected $table = 'seo';

public static $rules = array(
    'title' => '',
    'content' => '',
    'image' => ''
);

public function menu(){
    return $this->belongsToMany('Menu', 'menu_seo', 'seo_id', 'menu_id');
}
}

菜单型号

<?php

class Menu extends \Eloquent {
protected $fillable = array('title', 'menu_id', 'image');
protected $guarded = array('id');

protected $table = 'menus';

public static $rules = array(

    );

public function seo(){
    return $this->belongsToMany('Seo', 'menu_seo', 'menu_id', 'seo_id');
}
}

的HomeController

public function content($id)
{

    $menus_child = Menu::where('menu_id', 0)->with('menusP')->get();

    $menu = Menu::where('id', $id)->firstOrFail();

    //dd($menu->frames);
    return View::make('index', compact('menus_child'))->with('menu', $menu);
}

然后我调用我的视图来引用像这样的菜单

@foreach($menu->banner as $banners)
{{ $banners->title }}
@endforeach

1 个答案:

答案 0 :(得分:0)

我仍然不确定您希望如何检索与ID相关联的正确网址,但这并不重要。基本原则是获取URL并进行重定向:

Route::get('/{id}', function($id = 1){
    if(is_numeric($id))
    {
        $page = Menu::find($id);
        $url = 'foo'; // get correct URL somehow
        return Redirect::to($url);
    } else {
        // ...
    }   
});