2016-01-07 2 views
2

Я использую привязки и имеет следующий выбор формы ввода модель:Выберите значение по умолчанию, если не старый вход не установлен

{!! Form::select('user_id', $users, old('user_id') ?: Auth::id(), ['class' => 'form-control select2 users']) !!} 

Я хотел бы выполнить следующее:

  • В форме создания : выберите вариант, где user_id равен идентификатору аутентифицированного пользователя, , но, если в сеансе был старый ввод, выберите этот вариант.
  • В форме редактирования: всегда выберите параметр, который хранится в модели.

old('user_id') ?: Auth::id() не работает при редактировании, поскольку он всегда выбирает вариант аутентифицированного пользователя, а не тот, который хранится в модели.

ответ

0

Я считаю, что у вас уже есть эта линия,

{!! Form::Model($users, ['route' => ['admin.user.update', $user->id], 'method' => 'PUT']) !!} 

тогда ваш код должен нравится:

{!! Form::select('user_id', $users, isset($selectedUser) ? $selectedUser : null) !!} 

на функцию Создать не передать $ selectedUser для просмотра, но передать идентификатор в вашей сессии , и в вашей функции редактирования вы должны передать $ selectedUser для просмотра, то есть Auth :: user() -> id

+0

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

+0

@EsTeGe, потому что он всегда имеет сеанс user_id, я думаю, вот еще один идентификатор, вы можете попытаться судить о своем текущем маршруте, если оно используется для редактирования, дайте ему нулевое значение. \ @if (Маршрут :: currentRouteName() === 'admin.user.update') выполняет логику \ @endif –

Смежные вопросы