【发布时间】:2015-12-12 05:53:09
【问题描述】:
我是 Laravel 的新手。现在我开始使用 Laravel 5 开发一个项目。我之前一直在使用 CodeIgniter。我遇到了与我想做的不兼容的验证类问题。
通常我们像这样在 Controller 中进行验证。
public function postCreate(Request $request)
{
$this->validate($request, [
'name' => 'required|max:30',
'mm_name' => 'required|max:50',
]);
echo "passed";
}
这是有效的查找。但我想要做的是我想将该验证逻辑移动到模型中。所以我在 app 文件夹下创建了一个名为 Models 的新文件夹。在 Models 文件夹下,我创建了一个名为 ValidationHelper 的类,它扩展了 Model 类。
这是我的验证助手类
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use DB;
class ValidationHelper extends Model{
function CreateCategory($request)
{
$this->validate($request, [
'name' => 'required|max:30',
'mm_name' => 'required|max:50',
]);
}
}
所以现在我正在尝试使用构造函数依赖注入将该类导入我的控制器。所以现在我的控制器是这样的。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Models\ValidationHelper;
class CategoryController extends Controller
{
protected $validationHelper;
function __construct(ValidationHelper $v_helper)
{
$this->validationHelper = $v_helper;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function categoryList()
{
//
return View('admin.Category.list');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
return View('admin.Category.create');
}
}
所以当我运行我的应用程序并进行验证时,它给了我这个错误。我怎样才能在 Laravel 中做到这一点?如何将我的验证逻辑与模型分离?
【问题讨论】:
-
介意告诉我错误是什么?
-
在模型中移动验证逻辑而不是移动到它自己的特定类的原因是什么?
-
原因是我希望我的代码遵循 SOLID 规则。特别是单一的resposiblity.Cause in asp.net mvc ,我可以很容易地实现它。