如何在Laravel中做好GET URL

时间:2014-10-27 17:03:05

标签: php laravel routing

如果我有表格:

<form method="get" action="<?=action( "SomethingController@DoSomething" ) )?>">
    <select name="SomethingID">
        <?php foreach( $somethings as $something ) : ?>
            <option value="<?=$something->id?>"><?=$something->title?></option>
        <?php endforeach; ?>
    </select>
</form>

我如何为此做一个路由,以便我的DoSomething函数获得一个id给它,而不是像www.example.com/project/3/something?SomethingID=7

那样生成丑陋的URL
Route::get( "project/3/something/{SomethingID}", "SomethingController@DoSomething", function( $somethingID ) {
    return App::make( "SomethingController" )->DoSomething( $somethingID );
} );

我希望网址为www.example.com/project/3/something/7

问题在于它不能成为一个帖子......因为人们永远不能只是简单地转到那个网址......他们总是要发帖。

我是否需要让下拉框用javascript更改按钮的href,然后从中生成正确的URL?

似乎无法在此处找到任何内容: http://laravel.com/docs/4.2/routing

1 个答案:

答案 0 :(得分:0)

我觉得你做的一切都是正确的......我对你要做的事情感到有些困惑,然后做了“错误的”(因为一切看起来都是正确的),所以请提前道歉在黑暗中。你可以使用简单的标签而不是选择吗?

@foreach($somethings AS $something)
<a href="{{ URL::to('3/something/'.$something->id) }} ">{{ $something->title }}</a>
@endforeach

这样,点击该链接即可将其转到www.example.com/project/3/something/7 - &gt;或者链接生成的任何ID。至于路由,你可以这样做:

Route::get("project/3/something/{SomethingID}", "SomethingController@getSomething");
Route::post("project/3/something/{SomethingID}", "SomethingController@postSomething");

你的控制器:

public function getSomething($somethingID){
// Handle returning the view and whatever else you need
}

public function postSomething($somethingID){
// Handle the post function (i.e. do stuff.)
}

当路由依赖于变量ID时,有几件事要尝试,但是如果你想要完成其他事情,请留下评论,我也会研究它。

干杯!