Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
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)
Не в сети
Если хостинг бесплатный, то, скорее всего, дело в этом. У меня с хостинга zzz.com.ua письма не отправляются. Я у них спросил почему, так ответили, что покупай платный и пользуйся. Поинтересуйся у хостера
Изменено Morry (30.01.2018 12:11:16)
Не в сети
Если хостинг бесплатный, то, скорее всего, дело в этом. У меня с хостинга zzz.com.ua письма не отправляются. Я у них спросил почему, так ответили, что покупай платный и пользуйся.
Да, хостинг бесплатный и,кстати, именно этот же - zzz.com.ua, НО, я в Контроллере вообще нативно хочу получить POST из обычной формы и не получаю (см.Контроллер в топике), к тому же на бекенд-части не одна аналогичная форма, - и все они работают надлежащим образом, без каких-либо проблем. Тут делр в чем-то другом.....
Изменено littus (30.01.2018 12:17:56)
Не в сети
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
var_dump($_POST);die; //NOTHING!!!
}
laravel "обнуляет" глобальные переменные, используй \Illuminate\Http\Request
Не в сети
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)
Не в сети
Не в сети
Убери [’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)
Не в сети
[’middleware’=>[’web’] - убрал/ Ситуация не изменилась!
Не возвращай, иначе будут проблемы с сессиями.
Форма выглядит нормально. А проверял как она рендерится? Не ломается ничего?
Не в сети
[’middleware’=>[’web’] - убрал/ Ситуация не изменилась!Не возвращай, иначе будут проблемы с сессиями.Форма выглядит нормально. А проверял как она рендерится? Не ломается ничего?
Почему проблемы с сессиями? Вроде делал по документации и примерам, там для фронтенд части сайта была определена группа для всех роутов и посредником назначен web - [’middleware’=>[’web’]
В общем-то на локалке стоит с ним и все работает, и в сессию тоже пишет и флэш-сообщения с сессии тоже вытягивает, - одним словом все ном/
Но то на локалке/
Да, отрендеринаая форма выглядит так как нужно - все норм/
Тут что-то другое, я не знаю/
Возможно или с .htaccess связанное, т/к/ у себя на виртуальном сервере на локалке я поставил, что корень моего сайта (т/входа) - это [public], здесь же на хосте, я не могу так сделать,- у меня нет возможности такой, поэтому к своему приложению я обращаюсь сейчас как
domen/public/
Но, на бекенде то все работает/
Изменено littus (30.01.2018 17:31:16)
Не в сети
Страницы 1