我想重用store
generar\productoController
public function store(Request $request){}
我希望在这个类adquisicion\ComprasController
中重用它,我知道我必须导入类才能使用我想要的方法,但问题是$ request变量,我应该创建一个新的使用$request = new Request()
添加我想要的数据this并将其作为参数发送?
求助的我是laravel的新手
答案 0 :(得分:2)
你可以像$this->store(request(),$otherData)
这样试试
使用帮助程序获取当前的请求对象
答案 1 :(得分:0)
您可以将Request
数据传递给其他方法
productoController(Request $request){
// anything here
return redirect('your route name')->with('data', $request->all());
}
答案 2 :(得分:-1)
以下两种方法可以使方法在laravel应用程序中重用:
制作帮助方法
在Helpers
文件夹中创建app
文件夹,并在helper.php
<强> Helper.php 强>
namespace App\Helpers;
class Helper {
public static function store() {
$request = request();
// ....
}
}
<强> YourController.php 强>
namespace App\Repositories;
use App\Helpers\Helper;
use Illuminate\Http\Request;
class YourController extends Controller
{
public function store(Request $request) {
// call the store method as
Helper::store();
}
}
这里的缺点是你会混淆所有非相关帮助方法,可能很难组织。
<强>存储库强>
您可以使用Repository Pattern来构建应用程序,例如,如果将foo
对象存储到数据存储区,则可以先在Repositories
中创建app
文件夹}文件夹,并在FooRepository.php
文件夹中创建Repositories
:
<强> FooRepository.php 强>
namespace App\Repositories;
class FooRepository {
public function store() {
$request = request();
// ...
}
}
<强> YourController.php 强>
namespace App\Http\Controllers;
use App\Repositories\FooRepository;
use Illuminate\Http\Request;
class YourController extends Controller
{
private $fooRepository = null;
public function __construct(FooRepository $fooRepository) {
parent::__construct();
$this->fooRepository = $fooRepository;
}
public function store(Request $request) {
// call the method as
$this->fooRepository->store();
}
}