Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 16.02.2018 13:35:34

Форма обратной связи в шапке (модальное окно)

Здравствуйте. Решил изучить 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)

Не в сети

#2 16.02.2018 13:47:39

Re: Форма обратной связи в шапке (модальное окно)

В модалке делаешь форму. Экшен формы - роут. Ну а в контроллере пишешь код отправки письма.
сам роут
Route::post('mail', 'MailController@index')->name('mail');

Не в сети

#3 16.02.2018 13:49:20

Re: Форма обратной связи в шапке (модальное окно)

т.е. как я понял - мне нужно сделать отдельный контроллер для модалки, да? и еще вопрос, проблем не будет передавать данные в layout из контроллера? в yii2  - это проблема))

Не в сети

#4 16.02.2018 13:52:53

Re: Форма обратной связи в шапке (модальное окно)

Контроллер ты делаешь не для модалки, а для отправки писем. Через него можешь отправлять письма из любой формы или страницы. Из контроллера данные передаешь в отдельный файл - вьюху письма.

Не в сети

#5 16.02.2018 13:55:38

Re: Форма обратной связи в шапке (модальное окно)

Вот, создал я допустим контроллер, подключил вьюху (во вьюхе этой форма или модалка, а в ней форма). Как мне этот вид передать в шапку, layout?

Не в сети

#6 16.02.2018 13:58:03

Re: Форма обратной связи в шапке (модальное окно)

Ты ж письма собирался отправлять. Какая шапка? Ты вообще, что делать собираешься, как-то подробней расскажи

Не в сети

#7 16.02.2018 14:10:55

Re: Форма обратной связи в шапке (модальное окно)

У меня в шапке (layouts) находится кнопка заказать звонок, по нажатию на нее открывается модалка с формой. Сейчас в шапку я вставил код модалки самой, код выше. Как мне туда передать форму? насчет роутера и контроллера я понял, но как мне в шапку передать их? на yii2 я делал компонент, там был отдельно контроллер и вид. и потом этот компонент пихал в шапку в любое место. а как сделать на ларе это, я еще не знаю))) надеюсь Вы меня поняли))

Не в сети

#8 16.02.2018 14:17:03

Re: Форма обратной связи в шапке (модальное окно)

Вот твое модальное окно

<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)

Не в сети

#9 16.02.2018 14:20:28

Re: Форма обратной связи в шапке (модальное окно)

т.е. мне указать просто action  и method и обрабатывать в нужном мне контроллере, да?

Не в сети

#10 16.02.2018 14:20:58

Re: Форма обратной связи в шапке (модальное окно)

Да

Не в сети

#11 16.02.2018 14:24:00

Re: Форма обратной связи в шапке (модальное окно)

Так просто, спасибо)) В yii2 есть такое, как activeform и там input генерировать можно, думал тут тоже типа такого, поэтому и задал вопрос) Еще раз спасибо)

Не в сети

#12 16.02.2018 14:25:55

Re: Форма обратной связи в шапке (модальное окно)

Пожалуйста. Почитай вот - http://cccp-blog.com/laravel/laravel-pochta

Не в сети

#13 16.02.2018 15:07:54

Re: Форма обратной связи в шапке (модальное окно)

Начал это все дело делать и осыпались вопросы)Как сделать контроллер, чтобы по отправки на главную перекидывал после отправки?
Вот что сделал:
Роут:

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.

В чем я ошибся?

Не в сети

#14 16.02.2018 15:10:27

Re: Форма обратной связи в шапке (модальное окно)

Попробуй так
return redirect()->back()->with('status', 'Письмо отправлено!');

Не в сети

#15 16.02.2018 15:15:21

Re: Форма обратной связи в шапке (модальное окно)

все равно такая же ошибка. я в роуте и контроллере правильно все делаю?

Не в сети

#16 16.02.2018 15:16:51

Re: Форма обратной связи в шапке (модальное окно)

В форме экшен пиши mail

Не в сети

#17 16.02.2018 15:27:03

Re: Форма обратной связи в шапке (модальное окно)

не понял, где именно?

Не в сети

#18 16.02.2018 15:30:11

Re: Форма обратной связи в шапке (модальное окно)

<form action="mail" method="post" id="contact-form-top" name="mail">

Не в сети

#19 16.02.2018 15:34:10

Re: Форма обратной связи в шапке (модальное окно)

тоже самое, толкьо перебрасывает на сайт/mail

Не в сети

#20 16.02.2018 15:42:27

Re: Форма обратной связи в шапке (модальное окно)

    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', 'Ваше сообщение успешно отправлено.');
    }

Не в сети

#21 16.02.2018 15:51:20

Re: Форма обратной связи в шапке (модальное окно)

Контроллер

<?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

Не в сети

#22 16.02.2018 15:55:37

Re: Форма обратной связи в шапке (модальное окно)

Mail::send('email', ['data' => $data], function($message)

email - это вьюха, в которую передается переменная $data, с данными из формы. Это письмо, которое будет приходить. Письмо не отправляется, поэтому тебя и не редиректит

Не в сети

#23 16.02.2018 15:56:13

Re: Форма обратной связи в шапке (модальное окно)

вопрос. а может быть это из-за того, что у меня вид main.blade.php, а не просто main.php?

Не в сети

#24 16.02.2018 16:02:22

Re: Форма обратной связи в шапке (модальное окно)

Mail::send('email', ['data' => $data], function($message)

email - это вьюха, в которую передается переменная $data, с данными из формы. Это письмо, которое будет приходить. Письмо не отправляется, поэтому тебя и не редиректит

ну это для отдельной страницы контакты такое делают получаются? а у меня  в layouts форма. как мне сделать правильно?

Не в сети

#25 16.02.2018 16:06:53

Re: Форма обратной связи в шапке (модальное окно)

Создаешь вьюху email и в ней пишешь

<p>Имя - {{ $data['name'] }}</p>
<p>Телефон - {{ $data['phone'] }}</p>

Не в сети

Подвал раздела