【问题标题】:Laravel dynamic return from controller?Laravel从控制器动态返回?
【发布时间】:2014-06-24 15:08:43
【问题描述】:

我需要根据请求的路由从控制器返回不同的视图。

例如:在我的应用程序中,我有客户端、设备和广告系列。所有人都创建了 CRUD,但在某些情况下,我想做一些类似“查看客户,删除他的广告系列并返回到客户视图”之类的操作,但我的 campaignController@delete 默认返回广告系列。

想法不是重写同一个控制器只是改变返回的路线,Laravel 有什么帮助吗?

谢谢

【问题讨论】:

  • 你能分享一些代码吗?相关的路由器和控制器方法会有所帮助。
  • 如果没有看到一些示例,很难提供帮助,但您可以使用 Route::uri() 来返回用户所在的 URI。您可能会使用它来确定您需要重定向到的内容。
  • 我不确定我是否完全理解。如果你想让控制器做一些不同的事情......改变回报?
  • @Antonio Carlos Ribeiro,在他的代码中使用了一个完美的例子。

标签: dynamic laravel crud laravel-routing


【解决方案1】:

Laravel 不会控制应用程序的整个流程。如果您有广告系列删除路由器:

Route::delete('campaign/{id}');

它返回到广告系列

class CampaignController extends Controller {

    public function delete($id)
    {
        $c = Campaign::find($id);

        $c->delete();

        return Redirect::route('campaigns');
    }

}

你必须欺骗你的路线让它去你需要的地方,应该有几十种方法,这是一个非常简单的方法:

Route::delete('campaign/{id}/{returnRoute?}');

class CampaignController extends Controller {

    public function delete($id, $returnRoute = null)
    {
        $returnRoute = $returnRoute ?: 'campaigns';

        $c = Campaign::find($id);

        $c->delete();

        return Redirect::route($returnRoute);
    }

}

并使用返回路径选项在这些页面中创建链接:

link_to_route('campaign.delete', 'Delete Campaign', ['id' => $id, 'returnRoute' => 'clients'])

【讨论】:

  • 您好,首先感谢您的回复。我认为另一种解决方案是访问 Request ::fullUrl() 的值并在返回之前进行比较,但我认为它可以达到良好的做法。
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-04-07
  • 1970-01-01
相关资源
最近更新 更多