Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем доброго времени суток. Начинаю осваивать Ларавел на примере локального сайта (стоматологическая клиника).
--------------------------------
Версия Laravel в формате 5.4.
Версия PHP в формате 7.1
Операционная система и её версия ( Windows 10 x64 )
Вендор и версия Веб-сервера в формате Apache- PHP - 7 / Nginx 1.10
----------------------------------
Ошибки нет, хотя ожидал.
Догадок нет.
Итак,есть следующие файлы:
1. в web.php несколько роутов, привожу только интересующие :
// Главная страница
Route::get('/','MainController@main')->name('pageMain');
....
// Обработка формы заявки
Route::post('/','MainController@form')->name('form');
2. в main.blade.php кроме всего прочего есть код формы заявки :
<form action="{{route('pageMain')}}" method="post">
...
</form>
3. в MainController.php описаны 2 метода:
class MainController extends Controller
{
public function main() {
$doctors = Doctor::skip(0)->take(3)->orderBy('id', 'desc')->get();
return view('main')->with(['b_doctors'=>$doctors,]);
}
public function form(){
Client::where('id',1)->update([
'name' => $_POST['name'],
'phone' => $_POST['phone'],
'service' => $_POST['service'],
'doctor' => $_POST['doctor'],
'day' => $_POST['day'],
'time' => $_POST['cron'],
'comment' => $_POST['comment'],
]);
$doctors = Doctor::skip(0)->take(3)->orderBy('id', 'desc')->get();
return view('main')->with(['b_doctors'=>$doctors,]);
}
}
Вопрос: почему приведенный код осуществляет корректное обновление первой записи в БД, ведь форма НЕ обрабатывается методом form ?
Не в сети
Вопрос: почему приведенный код осуществляет корректное обновление первой записи в БД, ведь форма НЕ обрабатывается методом form ?
может быть php artisan route:clear ?
Не в сети
Он же берёт из модельки файл и обрабатывает его через б/д. Возможно проблема там. Нужно тщательно всё перепроверить
Не в сети
может быть php artisan route:clear ?
Route cache cleared!, все равно работает....
Он же берёт из модельки файл и обрабатывает его через б/д. Возможно проблема там. Нужно тщательно всё перепроверить
код модели я приводил. Там больше ничего нет. Ну кроме первых строчек:
namespace App\Http\Controllers;
use App\Client;
use Illuminate\Http\Request;
use App\Doctor;
Изменено PashaKiev (21.12.2017 11:17:27)
Не в сети
Ты должен знать что Роутер Контроллер и шаблоны Blade это MVC в Laravel, они друг без друга не работают. В роутах ты указал два варианта обработки запроса get и post. Поэтому роутер методом get или post обращается к контроллеру уже изначально, далее через модельку положит в базу данные. Если тебе нужно что изменить читай дкументацию. Вот ссылка как работают роуты и как их нужно писать https://laravel.com/docs/5.5/routing
Не в сети
Я читал документацию...
Роут 'pageMain' вызывает метод контроллера main, и ни какой другой.
Почему срабатывает метод form?
Может метод отправки формы "важнее" роута, и, видя что передаем данные через пост, выбирается метод, за который отвечает пост???
Сейчас создам еще одни метод form1, посмотрим... Может они оба выполнятся...
Не в сети
Не в сети
Посмотри в генерируемые HTML - route('pageMain') просто сгенерирует URL вроде https://site.com/, а так как ты шлешь форму методом POST, срабатывает маршрут Route::post.
Не в сети
Почему вы не используете Request? То что вы используете не ларавел вей.
виноват, спасибо!
Не в сети
Сейчас создам еще одни метод form1, посмотрим... Может они оба выполнятся...
дописал в web.php строчку:
Route::post('/','MainController@form1');
в контроллер ниже функции
public function form(){
Client::where('id',1)->update([
'name' => $request->input('name'),
'phone' => $request->input('phone'),
'service' => $request->input('service'),
'doctor' => $request->input('doctor'),
'day' => $request->input('day'),
'time' => $request->input('cron'),
'comment' => $request->input('comment'),
]);
$doctors = Doctor::skip(0)->take(3)->orderBy('id', 'desc')->get();
return view('main')->with(['b_doctors'=>$doctors,]);
}
дописал
public function form1(){
die("1234567");
}
После оправки формы - данные в БД не обновились (то есть form не отработал ?!?),а на белом фоне экрана появились 1234567
Вопросы остаются - буду еще разбираться....
Не в сети
Еще вопрос. Читал документацию, но не нашел ответ:
при регистрации пользователя в базе его пароль проверяется на соответствие условию:
'password' => 'required|string|min:6|confirmed';
в этом случае можно вводить только буквы и пароль записывается в базу уже в шифрованном виде $2y$10$E5ez9aJDCUZobcSt.ndAkeR9lrXdwr25Xc4xyscqGZHcv8DOGjUYu
Но я хочу что бы можно было вводить и цифры, по этому меняем условие проверки
'password' => 'required|min:6|confirmed';
Но теперь пароль не шифруется - a1a1a1.
Как исправить?)
Не в сети
Не в сети
Спасибо)
учту...
Не в сети
Не в сети
Если не решил проблему, покажи пожалуйста код, где сохраняется пароль
не , все верно. Я когда переопределил метод убрал функцию bcrypt(). Теперь все норм.
А под такой маленький вопрос все равно в новой теме расписывать все по шаблону: данные системы, версию php и т.д ?
Не в сети
Страницы 1