好的,所以我现在有了这个控制器,它基本上可以检索模型并进行一些计算。
原始代码有很多计算,但为简单起见,这是一个精简版。
我想将所有逻辑移到模型中,并且到目前为止已在其下面构建了代码,但无法弄清楚如何将自定义消息传递给Controller。
我是Laravel的初学者,所以试图以一种易于理解的方式实现这一点,以便我可以维护它并设法让下面的代码工作,但没有将自定义错误消息传递给Controller。
您能给我一个示例代码,说明如何将自定义错误消息传递给控制器
这是控制器中的原始代码。
Controller
public function getDetail()
{
$request = Model::where('id','=',8)->first();
if($request)
{
if($request->number >= 5)
{
return Redirect::back()->withMessage('You have 5 or more');
}
if($request->number > 0 && $request->number < 5)
{
return Redirect::back()->withMessage('You have between 1 and 4');
}
if($request->number <= 0)
{
return Redirect::back()->withErrors('You do not have enough points');
}
}
else
{
return Redirect::back()->withErrors('No details found');
}
}
这是我尝试构建的新代码,用于将逻辑移动到模型但无法弄清楚如何传递自定义错误消息?
Model
Class Profile
{
private $model
function __construct()
{
$this->model = Model::where('id','=',8)->first();
}
public function Notification()
{
if($this->model->number >=5)
{
return true;
}
if($this->model->number > 0 && $this->model->number < 5)
{
return true;
}
if($this->model->number <=0)
{
return false;
}
}
}
Controller
public function getDetail()
{
$request = new Profile;
$result = $request->Notification();
if($result)
{
return Redirect::back()->withMessage(????????);
}
else
{
return Redirect::back()->withErrors(????????);
}
}
答案 0 :(得分:1)
只需从Model函数返回消息,并在控制器中使用它,如下所示返回。
模型功能
public function Notification()
{
$returnArray = array();
if($this->model->number >=5)
{
$returnArray['isMessage'] = true;
$returnArray['message'] = "You have 5 or more";
}
if($this->model->number > 0 && $this->model->number < 5)
{
$returnArray['isMessage'] = true;
$returnArray['message'] = "You have between 1 and 4";
}
if($this->model->number <=0)
{
$returnArray['isError'] = true;
$returnArray['error'] = "You do not have enough points";
}
return $returnArray;
}
控制器功能
public function getDetail()
{
$request = new Profile;
$result = $request->Notification();
if(isset($result['isMessage']) && $result['isMessage'] == true)
{
return Redirect::back()->withMessage($result['message']);
}
else if (isset($result['isError']) && $result['isError'] == true)
{
return Redirect::back()->withErrors($result['error']);
}
}
理想情况下,您不应在控制器中创建Model的对象。您可以在模型中创建函数作为静态方法,并从控制器中调用它。