Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Здравствуйте. Решил изучить laravel после yii2. Мне нужно сделать обратную связь в модалке. Вопрос, как мне лучше сделать? в yii2 я создавал компонент (или виджет), но как здесь это сделать - не знаю, как роут прописать? вы можете пример скинуть если не трудно ну или объяснить....
Саму модалку я подключил в layouts:
<div id="myModal" class="modal fade">
<div class="modal-dialog modal-dialog_top">
<div class="modal-content ctt">
<div class="modal-header"><button class="close" type="button" data-dismiss="modal">×</button>
<h4 class="modal-title">Заказать звонок</h4>
</div>
</div>
</div>
</div>
Изменено Artikk (16.02.2018 13:37:23)
Не в сети
В модалке делаешь форму. Экшен формы - роут. Ну а в контроллере пишешь код отправки письма.
сам роут
Route::post('mail', 'MailController@index')->name('mail');
Не в сети
т.е. как я понял - мне нужно сделать отдельный контроллер для модалки, да? и еще вопрос, проблем не будет передавать данные в layout из контроллера? в yii2 - это проблема))
Не в сети
Контроллер ты делаешь не для модалки, а для отправки писем. Через него можешь отправлять письма из любой формы или страницы. Из контроллера данные передаешь в отдельный файл - вьюху письма.
Не в сети
Вот, создал я допустим контроллер, подключил вьюху (во вьюхе этой форма или модалка, а в ней форма). Как мне этот вид передать в шапку, layout?
Не в сети
Ты ж письма собирался отправлять. Какая шапка? Ты вообще, что делать собираешься, как-то подробней расскажи
Не в сети
У меня в шапке (layouts) находится кнопка заказать звонок, по нажатию на нее открывается модалка с формой. Сейчас в шапку я вставил код модалки самой, код выше. Как мне туда передать форму? насчет роутера и контроллера я понял, но как мне в шапку передать их? на yii2 я делал компонент, там был отдельно контроллер и вид. и потом этот компонент пихал в шапку в любое место. а как сделать на ларе это, я еще не знаю))) надеюсь Вы меня поняли))
Не в сети
Вот твое модальное окно
<div id="myModal" class="modal fade">
<div class="modal-dialog modal-dialog_top">
<div class="modal-content ctt">
<div class="modal-header"><button class="close" type="button" data-dismiss="modal">×</button>
<h4 class="modal-title">Заказать звонок</h4>
</div>
<form action="" method="">
<input type="text" name="">
<input type="text" name="">
<button type="submit">Отправить</button>
</form>
</div>
</div>
</div>
Изменено Morry (16.02.2018 14:18:06)
Не в сети
т.е. мне указать просто action и method и обрабатывать в нужном мне контроллере, да?
Не в сети
Да
Не в сети
Так просто, спасибо)) В yii2 есть такое, как activeform и там input генерировать можно, думал тут тоже типа такого, поэтому и задал вопрос) Еще раз спасибо)
Не в сети
Пожалуйста. Почитай вот - http://cccp-blog.com/laravel/laravel-pochta
Не в сети
Начал это все дело делать и осыпались вопросы)Как сделать контроллер, чтобы по отправки на главную перекидывал после отправки?
Вот что сделал:
Роут:
Route::post('mail', 'TopfeedController@index')->name('mail');
Вид:
<form action="topfeed/index" method="post" id="contact-form-top" name="mail">
<input type="text" name="name" placeholder="ФИО" required>
<input type="text" name="tel" placeholder="Телефон" required>
<input type="text" name="email" placeholder="Email" required>
<button type="submit" form="contact-form-top">Отправить заявку</button>
</form>
В файле ENV:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.yandex.ru
MAIL_PORT=465
MAIL_USERNAME=ПОЧТА ЯНДЕКСА
MAIL_PASSWORD=ПАРОЛЬ
MAIL_ENCRYPTION=null
MAIL_ADMIN=ПОЧТА ЯНДЕКСА
Контроллер:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Input;
use Illuminate\Contracts\Mail;
class TopfeedController extends Controller
{
public function index(){
$user = array(
'email' => Input::get('email')
);
$data = array(
'email' => Input::get('email'),
'name' => Input::get('name'),
'tel' => Input::get('tel')
);
Mail::send('email', $data, function ($m) use ($user) {
$mail_admin = env('MAIL_ADMIN');
$m->to($mail_admin, 'Mr. Admin')->subject('Вопрос');
});
return redirect()->route('/')->with('status', 'Письмо отправлено!');
}
}
Перекидывает все равно на страницу домен/topfeed/index и пишет Sorry, the page you are looking for could not be found.
В чем я ошибся?
Не в сети
Попробуй так
return redirect()->back()->with('status', 'Письмо отправлено!');
Не в сети
все равно такая же ошибка. я в роуте и контроллере правильно все делаю?
Не в сети
В форме экшен пиши mail
Не в сети
не понял, где именно?
Не в сети
<form action="mail" method="post" id="contact-form-top" name="mail">
Не в сети
тоже самое, толкьо перебрасывает на сайт/mail
Не в сети
public function index(Request $request){
$data = $request->all();
Mail::send('email', ['data' => $data], function($message) {
$message->to(env('ADMIN_EMAIL'), 'Сообщение')->subject('Сообщение');
$message->from(env('MAIL_USERNAME'), 'Имя');
});
return redirect()->back()->with('status', 'Ваше сообщение успешно отправлено.');
}
Не в сети
Контроллер
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Request;
use Illuminate\Contracts\Mail;
class TopfeedController extends Controller
{
public function index(Request $request){
$data = $request->all();
Mail::send('email', ['data' => $data], function($message) {
$message->to(env('ADMIN_EMAIL'), 'Сообщение')->subject('Сообщение');
$message->from(env('MAIL_USERNAME'), 'Имя');
});
return redirect()->back()->with('status', 'Ваше сообщение успешно отправлено.');
}
}
Роут:
Route::post('mail', 'TopfeedController@index')->name('mail');
Вид который находится в layouts:
<form action="mail" method="post" id="contact-form-top" name="mail">
<input type="text" name="name" placeholder="ФИО" required>
<input type="text" name="tel" placeholder="Телефон" required>
<input type="text" name="email" placeholder="Email" required>
<button type="submit" form="contact-form-top">Отправить заявку</button>
</form>
все равно перекидывает сюда сайт/mail
Не в сети
Mail::send('email', ['data' => $data], function($message)
email - это вьюха, в которую передается переменная $data, с данными из формы. Это письмо, которое будет приходить. Письмо не отправляется, поэтому тебя и не редиректит
Не в сети
вопрос. а может быть это из-за того, что у меня вид main.blade.php, а не просто main.php?
Не в сети
Mail::send('email', ['data' => $data], function($message)
email - это вьюха, в которую передается переменная $data, с данными из формы. Это письмо, которое будет приходить. Письмо не отправляется, поэтому тебя и не редиректит
ну это для отдельной страницы контакты такое делают получаются? а у меня в layouts форма. как мне сделать правильно?
Не в сети
Создаешь вьюху email и в ней пишешь
<p>Имя - {{ $data['name'] }}</p>
<p>Телефон - {{ $data['phone'] }}</p>
Не в сети