Как передать дополнительные данные после проверки? - PullRequest
1 голос
/ 15 апреля 2019

После проверки я хочу передать некоторые дополнительные данные для просмотра.Тем не менее, я не могу отправить это.

Мой контроллер похож на

public function test()
{
    $validator = Validator::make(
        request()->all(), 
        [ 'ziptest' => 'regex:/^([0-9]{3}-[0-9]{4})$/']
    );

    $errors = $validator->errors();

    if($errors->any()) {
        return back()
            ->withErrors($errors)
            ->withTitle('Data From Controller')
            ->withInput();
    }

    return 'success';
}

В моем блейде я хочу проверить, пройден ли заголовок или нет.Так что в моем виде лезвия у меня есть

@if($errors->any())
    @foreach($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
@endif

@if(isset($title))
    <p>{{ $title }}</p>
@endif

Тем не менее, часть ошибки отображается правильно.Но не название.Почему это не работает?

Я также попытался отправить заголовок таким образом.

return back()->withErrors($errors)
    ->with('title','Data From Controller')
    ->withInput();

Он также не работает.

Я искал в SO и нашел несколько похожих вопросов, касающихся передачи данных с контроллера для просмотра.Тем не менее, моя ситуация немного отличается.

Ответы [ 4 ]

2 голосов
/ 15 апреля 2019

В вашем примере вы перенаправляете обратно в предыдущее местоположение.Когда вы используете with* для перенаправления, информация мигает в сеансе , а не становится доступной непосредственно для представления, как если бы вы возвращали представление вместо.

Длячтобы он работал с вашим примером, вы должны проверить session('title'), чтобы получить перенесенный заголовок из перенаправления.

1 голос
/ 15 апреля 2019

Ваш второй подход почти верен.

return back()->withErrors($errors)
    ->with([
        'title' => 'Data From Controller'
    ])
    ->withInput();

обратите внимание на обозначение массива

0 голосов
/ 15 апреля 2019

Вы пробовали после хука проверки, но он вернет данные как в сумке с ошибкой

 $validator->after(function ($validator) {
        $validator->errors()->add('someField', 'Somedata');
 });

И мне интересно, откуда вы вызываете представление, потому что я видел, как ваш test() метод выполняет только часть проверки, с вашим просмотром вы можете передавать данные с ним, но с проверкой я думаю, что как в сумке ошибок, которую вы можете отправить данные для просмотра.

0 голосов
/ 15 апреля 2019

используйте здесь array_merge метод

    $errors = $validator->errors();

    if($errors->any()) {
      $newErrors = array_merge($errors->toArray(),['title' => 'Data From Controller']);  
      return back()
            ->withErrors($newErrors)
            ->withInput();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...