为什么重定向在模型laravel中显示空白页?

时间:2015-01-14 05:40:02

标签: laravel laravel-4 laravel-routing

我想问为什么以下代码有效,正常重定向,并且数据已成功插入:

CategoriesController:

public function store()
     {
         $data = Input::all();
        $category = new Term;
        if($category->saveCategory($data)){
            return Redirect::route('admin_posts_categories')->withSuccess('Category  successfully added.');
        }else{
            return Redirect::route('admin_posts_categories')->withError('Failed to add category. #ErrorCode : 13');
        }
    }

术语模型:

public function saveCategory($data){
    $this->name = $data['name'];
    $this->slug = $data['slug'];
    if($this->save()){
        $category_taxo = new TermTaxonomy;
        $category_taxo->term_id = $this->lastCategoryId();
        $category_taxo->taxonomy = 'category';
        $category_taxo->description = $data['description'];
        if($category_taxo->save()){
            return true;
        }else{
            return false;
        }
    }else{
            return "#Error Code : 4";
    }
}

以下内容仅插入数据,但随后显示空白页面并且不重定向:

CategoriesController:

public function store()
     {
         $data = Input::all();
         $category = new Term;
         $category->saveCategory($data);
    }

期限模型

public function saveCategory($data){
    $this->name = $data['name'];
    $this->slug = $data['slug'];
    if($this->save()){
        $category_taxo = new TermTaxonomy;
        $category_taxo->term_id = $this->lastCategoryId();
        $category_taxo->taxonomy = 'category';
        $category_taxo->description = $data['description'];
        if($category_taxo->save()){
            return redirect::route('admin_posts_categories')->withSuccess('Category successfully added.');
        }else{
            return redirect::route('admin_posts_categories')->withError('Failed to add category.');
        }
    }else{
            return redirect::route('admin_posts_categories')->withError('#Error Code : 4.');
    }
}

此外,我想问几个相关的问题,我的代码是否符合正确的设计模式,我应该在模型或控制器中的重定向位置?

3 个答案:

答案 0 :(得分:1)

尝试重定向:

1. return Redirect::back()->withSuccess('Category successfully added.');

OR

2. return Redirect::to(URL::to('admin_posts_categories'))->withSuccess('Category successfully added.');

在Controller中添加重定向登录。即使你想放入模型(不推荐),也要使用Ardent Hook函数,即afterSave()。

答案 1 :(得分:0)

首先,永远不要在模型中放置重定向逻辑。模型用于放置业务逻辑。第二件事是检查你是否在route.php中创建了admin_posts_categories的路由以及如何调用视图。如果可能,请发布您的路线代码。

答案 2 :(得分:0)

我建议不要在模型中添加重定向。所以第一个解决方案将是你所拥有的两个中最好的。

但回到你的问题。它显示一个空白页面,因为您的商店功能没有返回任何内容。 return $category->saveCategory($data);但如前所述,此方法不是最佳做法。

一个很好的提示是看看Laracasts,这将教会你所知道的一切,不了解和更多关于Laravel。