Laravel изменить имена переменных сообщения об ошибке

У меня есть две модели, NextPage и MasterInformation. Однако у меня есть на них одно мнение. Это представление имеет поля ввода. когда пользователь отправляет форму, мне нужно проверить данные. Я делаю это так:

$dataMasterInformation = [
    'container' => Input::get('container')
];
$dataNextPage = [
    'xpath' => 'next_page_xpath',
    'prefix' => 'next_page_prefix',
    'suffix' => 'next_page_suffix'
];
$validationMasterInformation = Validator::make($dataMasterInformation, MasterInformation::$rules);
$validationNextPage = Validator::make($dataNextPage, NextPage::$rules);
if(($validationMasterInformation->passes()) && ($validationNextPage->passes())){}else{
    return Redirect::back()->withInput()->withErrors($validationNextPage->messages()->merge($validationMasterInformation));
}

rules модели NextPage:

public static $rules = array(
    'xpath' =>'required'
);

rules Модели MasterInformation:

public static $rules = array(
    'container' => 'required'
);

Мой блейд-код для представления:

<li>
    {{Form::text('container', '', array('placeholder' => 'Container'))}}
    <span>{{$errors->first('container')}}</span>
</li>
<li>
    {{Form::text('next_page_xpath', '', array('placeholder' => 'Next Page Xpath'))}}
    <span>{{$errors->first('next_page')}}</span>
</li>
<li>
    {{Form::text('next_page_prefix', '', array('placeholder' => 'Next Page Prefix'))}}
    <span>{{$errors->first('next_page_prefix')}}</span>
</li>
<li>
    {{Form::text('next_page_suffix', '', array('placeholder' => 'Next Page Suffix'))}}
    <span>{{$errors->first('next_page_suffix')}}</span>
</li>
<li>
    <input type="submit" value="Save" />
</li>

Моя проблема

Имена в правилах отличаются от имен в форме. Таким образом, если есть ошибки с введенными данными, я могу их обнаружить, но не могу использовать их в переменной $errors->first() в коде блейда.

Как это решить, пожалуйста?

Я знаю, что мог бы использовать точные имена, но, к сожалению, не мог, потому что были бы конфликты в именах, так как модели используют одни и те же имена переменных.


person Anastasie Laurent    schedule 17.07.2014    source источник
comment
@lozadaOmr ваше редактирование содержит 2 синтаксические ошибки, будьте внимательнее при редактировании в будущем.   -  person OGHaza    schedule 18.07.2014


Ответы (1)


Я могу ошибаться, но если я правильно помню, $errors — это тип MessageBag, что означает, что для каждого сообщения на самом деле есть ключ, который может иметь какое-то отношение к входному имени.

если вы dd($errors), это может помочь, вот документ для MessageBag, http://laravel.com/api/class-Illuminate.Support.MessageBag.html. Чаще всего я использовал get(), merge() и has().

person windmaomao    schedule 20.07.2014