链接回源视图的最佳实践

时间:2014-09-22 22:01:21

标签: php laravel-4

我有几个视图用编辑按钮显示细节。当用户单击编辑按钮时,他们会转到该项目的编辑视图。从编辑视图我想链接回原始视图。人们使用的最佳做法是什么,以便编辑视图知道用户返回的位置?

我正在使用PHP和Laravel框架。

示例:

用户在/ invoice / 1 / detail,点击编辑到/ contact / 9 /编辑,点击保存或取消,返回/ invoice / 1 / detail

或者

用户在/ task / 2 / detail上,点击编辑到/ contact / 9 /编辑,点击保存或取消,返回/ task / 2 / detail

或者

用户在/ report / 3 / detail,点击编辑到/ contact / 9 /编辑,点击保存或取消,返回/ report / 3 / detail

1 个答案:

答案 0 :(得分:0)

如果你愿意冒险,你肯定会受益于资源控制器(http://laravel.com/docs/4.2/controllers#restful-resource-controllers)。采用这些后,您的详细视图将全部显示

public function show($id) {...}

您的编辑视图看起来都像

public function edit($id) {...}

并且路由会或多或少地处理自己。

假设您已采用此约定,您可以在基本控制器中放置一些通用逻辑,并让各个控制器扩展它们。

基本控制器可能有这样的东西:

<?php

use Illuminate\Routing\Controller as Controller;

class BaseController extends Controller
{
    /**
     * Returns the routable action string for editing this resource
     * @return string
     */
    final protected function getEditAction()
    {
        return __CLASS__ . '@edit';
    }

    /**
     * Returns the routable action string for showing this resource
     * @return string
     */
    final protected function getShowAction()
    {
        return __CLASS__ . '@show';
    }
}

然后,从扩展基本控制器的控制器,您可以执行以下操作:

// Redirect to the detail page upon save
return Redirect::action($this->getShowAction());

// Pass a link to the detail page into a view
return View::make('foo.bar', ['back_url' => URL::action($this->getShowAction())]);

等等。