Laravel重定向到post方法

时间:2014-05-03 12:26:32

标签: rest post laravel routing laravel-4

为了保持基本,我想创建一个书签应用

我有一个简单的书签

javascript:location.href='http://zas.dev/add?url='+encodeURIComponent(location.href)

我创建了一个休息控制器

<?php

use zas\Repositories\DbLinkRepository;

class LinksController extends BaseController {

protected $link;

function __construct(DbLinkRepository $link) {

        $this->link=$link;
        // ...
        //$this->beforeFilter('auth.basic', array('except' => array('index', 'show', 'store')));
        // ...
}


public function index()
{
    //return Redirect::to('home');
}
public function create()
{

}
public function store()
{
    return 'hello';
    //$this->link->addLink(Input::get('url'));
    //return Redirect::to(Input::get('url'));
}
public function show($id)
{
    //$url = $this->link->getUrl($id);
    //return Redirect::to($url);
}
public function edit($id)
{

}
public function update($id){

}
public function destroy($id){

}
}
在routes.php中,我创建了一个资源

Route::resource('links','LinksController');

因为我想重定向/添加到我添加的商店方法

Route::get('/add',function(){
    return Redirect::action('LinksController@store');
});

但它永远不会显示hello消息,而是将其重定向到

http://zas.dev/links

我也试过

return Redirect::route('links.store');

没有太大成功

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

问题是,一旦Redirect::,您丢失了所有Input值,因此您应该在执行重定向时手动将它们提供给控制器,如下所示:

Redirect::route('links.store', ["url" => Input::get("url")]);

最后在$url方法中添加store参数,以便接收我们在上一个方法中提供的值,如下所示:

public function store($url) {
    $this->link->addLink($url);
    return Redirect::to($url);
}

答案 1 :(得分:1)

好的,我现在得到你想做的事。这将有效:

Route::get('add', 'LinksController@store');

卸下:

Route::resource('links','LinksController');

并删除:

Route::get('/add',function(){
   return Redirect::action('LinksController@store');
});

对不起,花了这么长时间!