Я новичок в рамках, и у меня есть вопрос.
Я произвел авторизацию при входе в систему, чтобы получить доступ, и когда я захожу на страницу своего профиля, я могу просмотреть свои данные и изменить все на той же странице.
Мне нужно пойти получить свой идентификатор, чтобы иметь возможность сделать обновление или не нужно?
Что мне нужно сделать?
Как у меня дела хорошо? Мне нужно только создать маршрут :: пост?
страница моего профиля:
@if(Session::has('message'))
<div class="alert alert-danger">
<h5>{{ Session::get('message') }}</h5>
</div>
@endif
{!! Form::open(array('url' => 'backend/perfil', 'name' => 'updateProfile', 'role' => 'form'))!!}
<div class="row" style="margin-bottom: 20px;">
<div class="col-md-3 col-lg-3"></div>
<div class="col-md-2 col-lg-2">
{!! Form::label('name', 'Utilizador', ['class' => 'label_perfil']) !!}
</div>
<div class="col-md-5 col-lg-5">
{!! Form::text('name', null, ['class' => 'form-control input-md', 'placeholder' => 'Utilizador']) !!}
</div>
</div>
<div class="row" style="margin-bottom: 20px;">
<div class="col-md-3 col-lg-3"></div>
<div class="col-md-2 col-lg-2">
{!! Form::label('nascimento', 'Data de nascimento', ['class' => 'label_perfil']) !!}
</div>
<div class="col-md-5 col-lg-5">
{!! Form::date('nascimento', null, ['class' => 'form-control input-md']) !!}
{{ $errors->first('nascimento', '<span class=error>:message</span>') }}
</div>
</div>
<div class="row" style="margin-bottom: 20px;">
<div class="col-md-3 col-lg-3"></div>
<div class="col-md-2 col-lg-2">
{!! Form::label('sexo', 'Sexo', ['class' => 'label_perfil']) !!}
</div>
<div class="col-md-5 col-lg-5">
{!! Form::select('sexo', ['Masculino', 'Feminino'], null, ['class' => 'form-control input-md']) !!}
</div>
</div>
<div class="row" style="margin-bottom: 20px;">
<div class="col-md-3 col-lg-3"></div>
<div class="col-md-2 col-lg-2">
{!! Form::label('email', 'Email', ['class' => 'label_perfil']) !!}
</div>
<div class="col-md-5 col-lg-5">
{!! Form::text('email', null, ['class' => 'form-control input-md', 'placeholder' => 'Email']) !!}
</div>
</div>
<div class="row" style="margin-bottom: 20px;">
<div class="col-md-3 col-lg-3"></div>
<div class="col-md-2 col-lg-2">
{!! Form::label('password', 'Password', ['class' => 'label_perfil']) !!}
</div>
<div class="col-md-5 col-lg-5">
{!! Form::password('password', ['class' => 'form-control input-md', 'placeholder' => 'Password']) !!}
</div>
</div>
<div class="row" style="margin-bottom: 20px;">
<div class="col-md-3 col-lg-3"></div>
<div class="col-md-2 col-lg-2">
{!! Form::label('rpassword', 'Confirmar password', ['class' => 'label_perfil']) !!}
</div>
<div class="col-md-5 col-lg-5">
{!! Form::password('rpassword', ['class' => 'form-control input-md', 'placeholder' => 'Confirmar password']) !!}
</div>
</div>
<div class="row" style="margin-bottom: 20px;">
<div class="col-md-3 col-lg-3"></div>
<div class="col-md-2 col-lg-2">
{!! Form::label('imagem', 'Imagem', ['class' => 'label_perfil']) !!}
</div>
<div class="col-md-5 col-lg-5">
{!! Form::file('imagem', ['class' => 'input-file']) !!}
</div>
</div>
<div class="row" style="margin-bottom: 20px; margin-top: 30px;">
<div class="col-md-3 col-lg-3"></div>
<div class="col-md-9 col-lg-9">
{!! Form::submit('Enviar', ['class' => 'btn btn-primary']) !!}
</div>
</div>
{!! Form::close() !!}
Мой контроллер:
public function perfil() {
return view('backend/perfil.index');
}
public function updateProfile() {
$profileData = Input::except('_token');
$validation = Validator::make($profileData, User::$profileData);
if ($validation->passes()) {
User::where('id', Input::get('id'))->update($profileData);
return view('backend/perfil.index')->with('message', 'Updated Succesfully');
} else {
return view('backend/perfil.index')->with('message', $validation->messages());
}
}
Мой маршрут:
Route::get('backend/perfil','BackendControlador@perfil');
Route::post('backend/perfil', 'BackendControlador@updateProfile');
Пользователь моего приложения:
public static $profileData = array(
'email' => 'required|email',
'name' => 'required',
);
Вот подробный, что вы хотели сделать.
Шаг 1 : Откройте форму
{!! Form::open(array('url' => 'updateProfile', 'name' => 'updateProfile', 'role' => 'form'))!!}
Примечание. Ваше действие метода формы пустое. Вы должны просмотреть свой источник, чтобы увидеть его
Шаг 2 : Написать маршрут
Route :: post (‘updateProfile’, ‘homeController @ updateProfile’);
Это назовет homeController'
s updateProfile
функция
Шаг 3 : Определите контроллер, подтвердите ввод и сделайте свое действие через модель
Вот простая / примерная функция для вас
public function updateProfile()
{
$profileData = Input::except('_token');
$validation = Validator::make($profileData, User::$profileData);
if ($validation->passes()) {
User::where('id', Input::get('id'))->update($profileData);
return view('profile')->with('message', 'Updated Succesfully');
} else {
return view('profile')->with('message', $validation->messages());
}
}
То, что он делает, это получит все входы, кроме _token
и сохранить его в $profileData
, тогда он сделает проверку, которая определена внутри $profileData
внутри User
модель
Вот валидатор, вы должны его изменить
public static $profileData = array(
'email' => 'required|email',
'name' => 'required',
);
Шаг 4: Вернуть результат
Если валидация пройдена, она будет обновляться в таблице, куда передается пользователь, чей идентификатор, т.е. Input::get('id')
, и мы вернем страницу с return view('profile')->with('message', 'Updated Succesfully');
Я считаю ваше имя страницы profile.blade.php
и вы должны изменить его в соответствии с вашим лезвием,
Если проверка не пройдена, мы вернем страницу с сообщениями об ошибках.
return view('profile')->with('message', $validation->messages());
Вы должны иметь это в своем лезвии для отображения сообщений об ошибках
@if(Session::has('message'))
<div class="alert alert-danger">
<h5>{{ Session::get('message') }}</h5>
</div>
@endif
Замечания :
Если вы не хотите обновлять страницу, вам нужно просто выполнить Ajax-вызов, чтобы передать переменные и показать / скрыть результаты, возвращаемые контроллером.
Надеюсь, это поможет вам
Других решений пока нет …