Можно ли добавить данные для просмотра данных из конструктора контроллера - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть данные, которые я хочу вернуть во всех моих методах контроллера, и я подумал, что было бы чище вернуть их из конструктора контроллера;потому что в настоящее время это просто повторяющийся код возврата.

protected $data;

public function __construct() {
   $this->data = "Test";
}

public function index() {
   // Stuff

   return view('test')->with([
       'testData' => $this->data
        // other view data
   ]);
}

public function store() {
   // Stuff

   return redirect()->back()->with([
       'testData' => $this->data
        // other view data
   ]);
}

Это просто псевдо-пример.

Ответы [ 5 ]

0 голосов
/ 26 сентября 2018

Вы можете использовать ViewComposer, который позволяет вам прикреплять данные к представлению каждый раз при визуализации определенных представлений

namespace App\ViewComposers;
class DataComposer
{

    protected $data = ['1', '2', '3']; // This data is just for sample purpose

    public function compose(View $view)
    {
        $view->with('data', $this->data);
    }
}

И регистрировать этого композитора в списке всех представлений, по которым данные должныприлагается добавить этот код в методе boot с AppServiceProvider

View::composer(
    ['view1', 'view2', 'view3', '....'],
    'App\ViewComposers\DataComposer'
);
0 голосов
/ 26 сентября 2018

Вы можете просто написать метод контроллера, чтобы добавить свойство данных для вас:

protected function view($name, $data = []) 
{
    return view($name, $data + $this->data);
}

public function index() {
    ...
    return $this->view('view', ['other' => 'data']);
}
0 голосов
/ 26 сентября 2018

создать после промежуточного программного обеспечения Однако это промежуточное программное обеспечение будет выполнять свою задачу после обработки запроса приложением

0 голосов
/ 26 сентября 2018

Да, это возможно.Это сделано точно так же, как вы показали.

Однако я не думаю, что это лучший способ сделать это.Возможно, вы захотите взглянуть на ViewComposers , которые помогают предоставить набор данных для представления (или нескольких представлений) сразу после контроллера, но до того, как представление наконец будет предоставлено пользователю.

0 голосов
/ 26 сентября 2018

Да, это очень возможно с вашим кодом

[РЕДАКТИРОВАТЬ] Если вы хотите удалить ['testData' => $this->data] из всех методов контроллера, то вы можете использовать view composers .

Просмотр композиторов связан с one view.Так что для этого представления, если у вас есть один и тот же набор данных, который нужно передавать постоянно, используйте составители представлений!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...