为什么重定向在模型 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 的更多信息。
请问为什么下面的代码可以运行,重定向正常,数据插入成功:
类别控制器:
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 的更多信息。