Laravel по-русски

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

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

#1 30.01.2018 12:07:46

Нет данных $_POST

Laravel-5.5
PHP  7.0.27
Linux carrot x86_64
Server: FPM/FastCGI (на локальном где все работает стоит- Apache 2.0 Handler )

Всем привет!
Столкнулся с такой проблемой. Разрабатывал проект на Laravel-5.5 на локальной машине(PHP/Server -7.0.26-2/Apache 2.0 Handler ). После чего залил весь проект,как есть на бесплатный хостинг, где у меня размещено несколько проектов наWordPress.
На хостинге в настройках выбрал версию PHP = 7.0.
Все в принципе работает нормально, за исключением того, что на фронтенд-части сервера не работает POST, - я его не получаю вообще.
На сайте есть форма- контактная форма и из нее из POST я должен получать данные для валидации и формирования письма, но POST я вообще не прлучаю.
При том что проект имеет бэкенд-часть, где у меня из Админ-панели редактируется некоторый контент и там есть аналогичные формы POST(для редактирования,добавления нового материала). Так вот эти формы в бэкэнде работают отлично (получаю POST данные из них, обрабатываю, валидирую). На локалке(с которой я копировал проект) конечно же все работает как нужно и все норм.

Контроллер

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator; 
use App\Http\Controllers\Controller;

use App\Page;
use App\People;
use App\Portfolio;
use App\Service;

class IndexController extends Controller
{
    public function execute( Request $request ) {

        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            var_dump($_POST);die; //NOTHING!!!
        }

        if( $request->isMethod('post') ) {  
            ......
            dd( $request->all() ); //NOTHING!!!

            //Validate
            ......
            return redirect()->route('home')
                ->withErrors($validator)->withInput($request->all()); 
        }


        return view('frontendsite.index', [
        ....
        ])->render();
}

Роут:

Route::group( ['middleware'=>['web'] ], function() { 
    Route::match(['get','post'], '/', ['uses'=>'IndexController@execute', 'as'=>'home']);

    Route::auth();
});

Во вью, где находится эта форма все стандартно - я использую просто стандартную форму с нужными полями:

    <form class="form-horizontal" name="contact_us_home_form" action="{{ route('home') }}" method="post" novalidate>
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
           .....
    </form>

Как уже говорил, на бекен-части есть много форм и все они работают, - т.е.все норм, что меня вообще сбивает с толку, поскольку все одинаково по-сути, ну кроме того, что для бекенд-части у меня префикс другой и Класс-посредник другой, - тут ['auth'], а в том роуте,
что выше приведен - ['web']:

Route::group( [ 'prefix'=>'admin', 'middleware'=>['auth'] ], function() {
.....
});

В чем может заключаться проблема??

Сначала я подумал,что возможно не правильно перенес проект, т.к. по сути я просто, как есть, включая папку [vendor], скопировал сожержимое с локалки на бесплатный хост и там на хосте я не делал composer update, например. Но если так, то остальные формы на backend`e работают, - значит все норм. Так в чем же дело??

Изменено littus (30.01.2018 12:11:02)

Не в сети

#2 30.01.2018 12:11:02

Re: Нет данных $_POST

Если хостинг бесплатный, то, скорее всего, дело в этом. У меня с хостинга zzz.com.ua письма не отправляются. Я у них спросил почему, так ответили, что покупай платный и пользуйся. Поинтересуйся у хостера

Изменено Morry (30.01.2018 12:11:16)

Не в сети

#3 30.01.2018 12:15:15

Re: Нет данных $_POST

Если хостинг бесплатный, то, скорее всего, дело в этом. У меня с хостинга zzz.com.ua письма не отправляются. Я у них спросил почему, так ответили, что покупай платный и пользуйся.

Да, хостинг бесплатный и,кстати, именно этот же - zzz.com.ua, НО, я в Контроллере вообще нативно хочу получить POST из обычной формы и не получаю (см.Контроллер в топике), к тому же на бекенд-части не одна аналогичная форма, - и все они работают надлежащим образом, без каких-либо проблем. Тут делр в чем-то другом.....

Изменено littus (30.01.2018 12:17:56)

Не в сети

#4 30.01.2018 12:20:52

Re: Нет данных $_POST

        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            var_dump($_POST);die; //NOTHING!!!
        }

laravel "обнуляет" глобальные переменные, используй \Illuminate\Http\Request

Не в сети

#5 30.01.2018 12:32:37

Re: Нет данных $_POST

laravel "обнуляет" глобальные переменные, используй \Illuminate\Http\Request

Я итак использую, в Конроллере, что привел в топике, и я получаю и через Request

        if( $request->isMethod('post') ) {  
            ......
            dd( $request->all() ); //NOTHING!!!

            //Validate
            ......
            return redirect()->route('home')
                ->withErrors($validator)->withInput($request->all()); 
        }

Но в это условия я не попадаю!

И если я поставлю dump выше условия с POST, то все равно Этот Объект Request пуст, даже когда данные в форме и форма отправлена

        dd( $request->all() ); //NOTHING!!! - вернее возвращается [] - т.е. пустой объект
        if( $request->isMethod('post') ) {  
            ......
            dd( $request->all() ); //NOTHING!!!

            //Validate
            ......
            return redirect()->route('home')
                ->withErrors($validator)->withInput($request->all()); 
        }

Т/е/ у меня, получается, нет Объекта Request по какой-то причине...

Изменено littus (30.01.2018 12:36:45)

Не в сети

#6 30.01.2018 16:00:53

Re: Нет данных $_POST

Убери [’middleware’=>[’web’] из файла маршрутов и покажи пожалуйста полностью форму.

Не в сети

#7 30.01.2018 16:40:11

Re: Нет данных $_POST

Убери [’middleware’=>[’web’] из файла маршрутов и покажи пожалуйста полностью форму.

<!-- Contact Section -->
<div id="<?php echo ( isset($pages) ) ? $pages[4]['alias'] : '';?>" class="section contact-section">
    <div class="container-fluid">
        <div class="col-lg-4 col-md-4">
            <?php echo ( isset($pages) ) ? $pages[4]['text'] : '';?>
        </div>
        <div class="col-lg-8 col-md-8">
            @if( count($errors) > 0 )
                <div class="alert alert-danger">
                    <ul> @foreach( $errors->all() as $error ) <li>{{ $error }}</li> @endforeach </ul>
                </div>
            @endif

            @if( session()->has('status_success_send_mail') )
                <div class="alert alert-success">
                    <ul> <li>{{ session('status_success_send_mail') }}</li> </ul>
                </div>
            @endif

            <form class="form-horizontal" name="contact_us_home_form" action="{{ route('home') }}" method="post" novalidate>
                <input type="hidden" name="_token" value="{{ csrf_token() }}">

                <div class="form-group">
                    <div class="col-lg-12 wow fadeInUp" data-wow-duration="1.5s" data-wow-delay="0.3s" data-wow-offset="80">
                        <input type="text" class="form-control <?=($errors->has('your_name')) ? 'input-error' : '';?>" name="your_name" id="your_name" placeholder="Your Name *" value="{{ old('your_name') }}">
                        @if ($errors->has('your_name')) <span class="help-block" style="color:darkred;"> {{ $errors->first('your_name') }} </span> @endif  
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-lg-12 wow fadeInUp" data-wow-duration="1.5s" data-wow-delay="0.3s" data-wow-offset="80">
                        <input type="email" class="form-control <?=($errors->has('your_email')) ? 'input-error' : '';?>" name="your_email" id="your_email" placeholder="Your E-mail *" value="{{ old('your_email') }}">
                        @if ($errors->has('your_email')) <span class="help-block" style="color:darkred;"> {{ $errors->first('your_email') }} </span> @endif  
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-lg-12 wow fadeInUp" data-wow-duration="1.5s" data-wow-delay="0.3s" data-wow-offset="80">
                        <textarea class="form-control <?=($errors->has('your_comment')) ? 'input-error' : '';?>" rows="5" name="your_comment" id="your_comment" placeholder="Your Message" value="{{ old('your_comment') }}"></textarea>
                        @if ($errors->has('your_comment')) <span class="help-block" style="color:darkred;"> {{ $errors->first('your_comment') }} </span> @endif  
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-lg-12 wow fadeInUp" data-wow-duration="1.5s" data-wow-delay="0.3s" data-wow-offset="80">
                        <button type="submit" class="btn btn-lg btn-danger" name="btn_submit_contact_us_home_form" id="btn_submit_contact_us_home_form">SEND MESSAGE</button>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>
<!-- /Contact Section -->

[’middleware’=>[’web’] - убрал/ Ситуация не изменилась!

Изменено littus (30.01.2018 17:00:05)

Не в сети

#8 30.01.2018 17:10:48

Re: Нет данных $_POST

[’middleware’=>[’web’] - убрал/ Ситуация не изменилась!

Не возвращай, иначе будут проблемы с сессиями.

Форма выглядит нормально. А проверял как она рендерится? Не ломается ничего?

Не в сети

#9 30.01.2018 17:26:39

Re: Нет данных $_POST

[’middleware’=>[’web’] - убрал/ Ситуация не изменилась!Не возвращай, иначе будут проблемы с сессиями.Форма выглядит нормально. А проверял как она рендерится? Не ломается ничего?

Почему проблемы с сессиями? Вроде делал по документации и примерам, там для фронтенд части сайта была определена группа для всех роутов и посредником назначен web   - [’middleware’=>[’web’]
В общем-то на локалке стоит с ним и все работает, и в сессию тоже пишет и флэш-сообщения с сессии тоже вытягивает, - одним словом все ном/
Но то на локалке/

Да, отрендеринаая форма выглядит так как нужно - все норм/
Тут что-то другое, я не знаю/
Возможно или с .htaccess  связанное, т/к/ у себя на виртуальном сервере на локалке я поставил, что корень моего сайта (т/входа) - это [public], здесь же на хосте, я не могу так сделать,- у меня нет возможности такой, поэтому к своему приложению я обращаюсь сейчас как
domen/public/
Но, на бекенде то все работает/

Изменено littus (30.01.2018 17:31:16)

Не в сети

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