2016-04-07 1 views
0

У меня есть ресурс пользователя, связанный в таблице users.Пользователь Редактировать Ресурс не работает

Мой маршрут:

Route::resource('user', 'UserController'); 

UserController.php

public function edit($id) 
{ 
    $user = User::find($id); 
    return view('user.edit')->with(array('user'=>$user)); 
} 

public function update(Request $request, $id) 
{ 
    $rules = array(
     'name' => 'required', 
    ); 

    $validator = Validator::make(Input::all(), $rules); 
    if ($validator->fails()) 
    { 
     return Redirect::to('user/'.$id.'/edit')->withInput()->withErrors($validator); 
    } 
} 

И мой взгляд

{!! Form::model($user, array('route' => array('user.update', $user->id), 'method' => 'PUT', 'class' => 'form-horizontal')) !!} 
    @if (count($errors) > 0) 
    <div class="alert alert-danger"> 
      <strong>Whoops!</strong> There were some problems with your input.<br><br> 
      <ul> 
       @foreach ($errors->all() as $error) 
        <li>{{ $error }}</li> 
       @endforeach 
      </ul> 
     </div> 
    @endif 

    <div class="flash-message"> 
     @foreach (['danger', 'warning', 'success', 'info'] as $msg) 
      @if(Session::has('alert-' . $msg)) 
      <p class="alert alert-{{ $msg }}">{{ Session::get('alert-' . $msg) }}</p> 
      @endif 
     @endforeach 
    </div> 

    <div class="form-group"><label class="col-sm-2 control-label">Name</label> 
     <div class="col-sm-10"><input type="text" name="name" id="name" value="{{$user->name}}" class="form-control"></div> 
    </div> 

    <div class="form-group"><label class="col-sm-2 control-label">ID Number</label> 
     <div class="col-sm-10"><input type="text" name="id_number" id="id_number" value="{{$user->id_number}}" class="form-control"></div> 
    </div> 

    <div class="hr-line-dashed"></div> 
    <div class="form-group"> 
     <div class="col-sm-4 col-sm-offset-2"> 
      <button class="btn btn-primary" type="submit">Save changes</button> 
     </div> 
    </div> 
{!! Form::close() !!} 

Так что с этой установкой я ожидаю, что когда нажмите кнопку отправки на моей страничке войдет в функцию update() так же, как и мой другой ресурс. Но проблема в том, когда я нажму кнопку Отправить, он направит меня к

http://localhost/hrs/public/user/1 

и белая пустая страница без каких-либо ошибок. Значит, это будет моя функция update? Я следую той же схеме с моим другим ресурсом, и это единственный, кто не работает.

+0

Возможно, вы просто не получили ошибку проверки? Этот url - правильный путь для метода 'update', поэтому я думаю, что все работает отлично. Попробуйте поместить 'dd ('here')' в ваш метод 'update'. Уверен, вы увидите 'здесь' :) –

+0

@ GiedriusKiršys Спасибо за предложение. Я, наконец, знаю, что происходит. haha запрос выполняется после отказа валидатора. Поскольку у меня нет другой части, он ничего не сделает haha ​​ – jackhammer013

ответ

0

У вас неправильная настройка веб-сервера. Вы должны указать свой веб-сервер (обычно Apache или nginx) в каталог public вашего проекта Laravel. После этого перезапустите веб-сервер.

Например, для Apache правильной конфигурации будет что-то вроде этого:

DocumentRoot "C:/xampp/htdocs/hrs/public" 
<Directory "C:/xampp/htdocs/hrs/public"> 
+0

Привет. Спасибо за помощь, но нет ничего плохого в моем публичном руководстве, поскольку я могу войти в систему и все такое. Проблема заключается в методе обновления, но теперь я исправил его. – jackhammer013

+0

Когда Laravel создает URL-адрес с публикой в ​​нем, это означает, что у вас неправильная настройка. Вы поймаете много подобных ошибок, если не исправите это. –

+0

Это нормально, если у меня есть публика в url, потому что я в Dev Stage, я удаляю публику в процессе производства. Я понимаю использование виртуального хоста. В любом случае, моя проблема в моем вопросе - это просто я забыл добавить «еще» часть моего кода и не имеет никакого отношения к URL-адресу или Direcotry :) – jackhammer013

0

Найдено проблема, я не имею else части проверки. так как именно здесь происходит событие. Поскольку у меня его нет, он ничего не сделает.

$validator = Validator::make(Input::all(), $rules); 
    if ($validator->fails()) 
    { 
     return Redirect::to('user/'.$id.'/edit')->withInput()->withErrors($validator); 
    } 
    else 
    { 
     dd($rules); 
    } 
Смежные вопросы