Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Недавно начал работать с laravel и c php в целом. Понимаю что здесь нет экстрасенсов, но можете выложить хотя бы свои догадки.
Проблема заключается в том, что при попытке внести изменения в существующую запись в БД, получаю 403 ошибку Access forbidden!
Понимаю, что ошибка заключена в ограничение доступа к данным. Но ни имею понятия, где эти ограничения прописаны.
Не в сети
Возможно неправильно настроили локальный сервер. Может laravel неправильно установили. Может папку public не обозначили в настройках сервера в качестве корня сайта.
Не в сети
Добавление, вывод и удаление записей прекрасно работают, а вот изменение записи приводит к ошибке.
Не в сети
Код покажите?
Не в сети
В контроллере:
public function processRequest($id) {
$id = (int) $id;
$data = Input::all();
$rules = [
'shipping_costs' => 'required',
'comments' => 'required'
];
$val = Validator::make($data, $rules);
if($val -> fails()) {
$errors = $val -> messages() -> toArray();
return redirect()->back()->withInput()->with('errors', $errors);
}
Request::process($id, $data);
return Redirect::to('newrequests');
}
и в моделе:
public static function process($id, $data) {
try {
$request = Request::where('id', '=', $id)
->update([
'shipping_costs' => $data['shipping_costs'],
'comments' => $data['comments'],
'processed' => true
]);
} catch (Exception $ex) {
return $ex;
}
return $request;
}
Не в сети
Middleware не трогал. Имеются только стандартные
Не в сети
Не в сети
Не в сети
Дмитрий, спасибо, буду знать.
А насчет middleware. Я их не трогал. Как я понимаю, они фильтруют заданные запросы. Я в начале грешил на стандартные, но их удаление не повлияло на проблему.
Не в сети
Не в сети
Никак не прописан. Как я сказал, я новичок в этом. Надо было что-то прописывать? Чего же тогда удаление и добавление работают нормально?
Не в сети
А документация для кого? Для профессионалов, что-ли?
Содержимое файла app/Http/routes.php покажите.
Не в сети
Документацию читал, но она, имхо, очень скудная.
<?php
Route::get('/', 'PageController@index');
Route::get('index', 'PageController@index');
Route::get('post{id}','PostController@getPost');
Route::get('about', 'PageController@about');
Route::get('calculator', 'PageController@calculator');
Route::get('china', 'PageController@china');
Route::get('contacts', 'PageController@contacts');
Route::get('services', 'PageController@services');
Route::get('turkey', 'PageController@turkey');
Route::get('admin', 'PageController@admin');
Route::get('registration', 'UserController@registration');
Route::get('logout', function() { Auth::logout(); return Redirect::to('admin'); });
Route::get('request', function() { return View('request'); });
Route::get('req_{id}', 'RequestController@getRequest');
Route::get('archive', 'PostController@archive');
Route::get('user_{login}','UserController@getUser');
Route::get('deluser_{login}', 'UserController@delUser');
Route::get('newpost', function() { return View('newpost'); });
Route::get('newrequests', 'RequestController@getAllNew');
Route::get('allrequests', 'RequestController@getAll');
Route::get('delpost_{id}', 'PostController@delPost');
Route::get('newreq_{id}', 'RequestController@getNew');
Route::post('post', 'PostController@addPost');
Route::post('login', 'UserController@login');
Route::post('registration', 'UserController@register');
Route::post('request', 'RequestController@addRequest');
Route::post('changePassword_{login}', 'UserController@changePassword');
Route::post('processRequest', 'RequestController@processRequest');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
Не в сети
- Документацию читал, но она, имхо, очень скудная.
Вполне ёмкая. По крайней мере для Ваших задач её вполне хватает. А остальное можно узнать, прочитав документацию к классам, которые интересуют.
Ну вот, у Вас же маршруты созданы. А говорите «почему добавление/изменение работает?». Оно и работает потому, что маршруты есть. Хотя и к этому действию тоже есть:
PHPRoute::post('processRequest', 'RequestController@processRequest');
Тут всё правильно. Видимо в middleware искать причину надо.
Не в сети
Привет по кускам кода трудно четко что-то сказать, но что вижу у тебя:
1) в роуте
Route::post('processRequest', 'RequestController@processRequest');
а в контроллере
public function processRequest($id) {...}
$id он не найдет т.к. ты в роуте не указал т.е. вот так надо было бы
$router->pattern('id', '[0-9]+');
Route::post('processRequest/{id}', 'RequestController@processRequest');
а так в тех кусках что ты прислал много чего некорректного вот к примеру посмотри https://laracasts.com/series/laravel-5-from-scratch
там много полезного на этом сайте и очень доходчево
Не в сети
Страницы 1