我必须为laravel*中的CRUD(创建、读取、更新、删除)*new一次又一次地编写相同功能的方法


public function create() { $Gallery= GalleryModel::all(); return view('admin.gallery',compact('Gallery')); }
public function video() { $Video= VideoModel::all(); return view('admin.video',compact('Video')); }
public function team() { $Team = TeamModel::all(); return view('admin.team',compact('Team')); }

哪里有任何方法可以使不同页面的单一方法

有很多方法可以做到这一点。一般的想法是使用特征。

// ControllerTrait.php
trait ControllerTrait {
// Here you include all yor controller's methods
}

然后,在每个控制器中,你都使用你的特征

// YourController.php
class YourController extends Controller {
use ControllerTrait;
// The rest of your controller's code
}

如果您考虑类继承,您甚至可以更进一步:

你可以创建一个像这样的基本控制器:

// MyBaseController.php
class BaseController extends Controller {
use ControllerTrait; // <= you can mix the strategies for more power
// All your BaseController's methods
}

然后让你的控制器从基本的扩展:

// YourController.php
class YourController extends BaseController {
//
}

最后,你可以编辑你的BaseController和ControllerTrait,让你的生活轻松很多。

注:编辑是因为你在谈论控制器,而我在思考模型,但你肯定可以使用相同的原则来管理你的模型。

注2:特性对于那些真正将作为所有控制器的默认工作的方法更好,并且在BaseModel中保留那些需要在任何继承控制器中自定义的特性。例如:

// MyBaseController.php
class BaseController extends Controller {
protected function a($request) {
//
}
}
// YourController.php
class YourController extends BaseController {
protected function a($request) {
$request = $modifiedRequest; // You can modify the inputs
parent::a($request); // <== Execute the parent method;
}
}

相关内容

最新更新