假设我有一个搜索表单,它使用 ajax 将搜索参数提交到 post 方法,在该方法上我已在 View 中返回结果。现在,在该 View 上,我可以选择让用户选择在 Excel 中打印的记录范围,因此为此,我需要再次将搜索参数以及打印设置提交到另一个发布方法,在该方法上我需要搜索再次搜索参数,并限制搜索选定的打印范围。因此,为此我需要相同的代码块,但为了避免这种情况,是否可以从 print post 方法中调用 search post 方法?如果可以的话我该怎么做?或者有其他方式吗?
最佳答案
首先,如果您使用 POST 将一些数据从客户端传递到服务器,则该数据在每种方法中都可用。您不必将其从一个传递到另一个。
就您而言,最好将业务逻辑移至存储库。您可以在 app
目录下创建一个名为 repositories
的新文件夹。然后创建一个新的存储库类,例如 SearchRepository
,如下所示
namespace App\Repositories;
use Illuminate\Http\Request;
class SearchRepository {
public function __construct(Request $request) {
$this->request = $request;
}
/**
* Search details
*
* @return array
*/
public function getDetails() {
$q = $this->request->get('q');
$limit = $this->request->get('limit');
// Do the search operation with parameters recieved
return $result;
}
}
您可以使用依赖注入(inject)在任何 Controller 中使用上述存储库,如下所示。这样,您就不需要在 Controller 中重复任何业务逻辑。
namespace App\Http\Controllers;
use App\Repositories\SearchRepository
class SearchController extends Controller {
public function __construct(SearchRepository $search) {
$this->search = $search;
}
public function searchAction() {
$result = $this->search->getDetails();
// return to view or whatever
}
public function printAction() {
$result = $this->search->getDetails();
// print excel code or whatever
}
}
关于Laravel 如何将帖子数据从一个帖子方法传递到同一 Controller 内的另一个帖子方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35307734/