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

Why redirect show blank page in model laravel?

请问为什么下面的代码可以运行,重定向正常,数据插入成功:

类别控制器:

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";
    }
}

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

类别控制器:

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.');
    }
}

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

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

试试这个重定向:

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

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

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

我建议不要在您的模型中放置重定向。因此,第一个解决方案将是您拥有的两个解决方案中最好的一个。

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

一个很好的建议是看一看 Laracasts,这会告诉你你知道的、不知道的一切,以及关于 Laravel 的更多信息。