Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
удобно как две одинаковые даты.
Про это я не подумал. Вроде бы да, но тут все зависит от формулировки и про это я не подумал. В форме я указываю это, как "дата вьезда" и "дата выезда" и тут все логично. Но номер будет забронирован по факту с даты вьезда по дату выезда минус один день.
Но я храню в datetime ведь и когда следующий юзер скажет, что хочет забронировать с субботы до вс, то по идее он имеет в виду свободный номер с 12:00 субботы, а он занят до 12:00 субботы. Вот это нужно тоже протестить! Спасибо)
Всем привет. Я долго ломал голову, как проверить, снят ли номер на определенный диапозон.
Хочу просто узнать, может есть более компактное решение.
public static function getBookingsForDateDiaposonForAllRooms(\Illuminate\Http\Request $request){
$bookings = DB::table('bookings')
//Или мы попадаем прямо в диапозон брони
->whereDate('startDate', '<', date('Y-m-d H:i:s', strtotime($request->startDate)))
->whereDate('finishDate', '>', date('Y-m-d H:i:s', strtotime($request->finishDate)))
->orWhere(function ($query) {//Или только дата заезда попадает в диапозон брони
global $request;
$query
->whereBetween('startDate',
[
date('Y-m-d H:i:s', strtotime($request->startDate)),
date('Y-m-d H:i:s', strtotime($request->finishDate))
])
;
})
->orWhere(function ($query) {//Или только дата выезда попадает в диапозон брони
global $request;
$query
->whereBetween('finishDate',
[
date('Y-m-d H:i:s', strtotime($request->startDate)),
date('Y-m-d H:i:s', strtotime($request->finishDate))
])
;
})
->get();
return $bookings;
}
Я пробовал давать различные настройки для http only и secure, но не помогает.
Вы все правильно говорите. Я посмотрел. В тело страницы я вообще ничего не вывожу для тестирования. Там пусто. Но я нашел, по крайней мере из-за чего такая пробема. Дело в SSL сертификате. У меня установлен SSL на мой домен и он не отдает некоторые заголовки, а на том же хосте, где нет ssl все нормально
Я пробовал удалять все из шаблона а в public/index.php error_reporting(E_ALL);
Но ошибок нет, а сессии создаются.
Я пробовал искать регуляркой любой символ перед <?php но нет, находит только в artisan. Не знаю где это и как поймать. В логах пусто. Ведь не может быть ларавел изначально быть с ошибками.
Это все я проверял и смотрел. И выводил пустую страницу, и пробовал с куками и на http и на https. Проблема такая всплывала, но решить ее не получилось.
Перенес на другой хостинг и все заработало. Так бы не хотелось держать проекты на 2-х хостингах.
Я пользуюсь бегетом, но непонятно что там не так.
На каждый запрос ларавел создает новую сессию. Нажал F5 - новая сессия. Перешел на другую страницу - новая сессия.
Сессии создаются в …/fomintimur.ru/storage/framework/sessions.
Менял права на 777 для storage и всех вложенных файло и папок.
Пробывал менять место хранения на database - то же самое.
Думал проблема в моем коде, но сегодня решил залить новый пустой ларавел 5.3. Установил через composer.
composer global require "laravel/installer"
composer create-project --prefer-dist laravel/laravel blog "5.3.*"
Потом перенес все это в свою папку(поднял на уровень выше) и
php7.2 artisan key:generate
В общем, все по инструкции. Возможно причина в папке public_html(на хосте) Я в нее все перенес из public.
Уже и не знаю что делать. Перепробовал все всевозможные настройки env и т.д. Помогите, может была такая проблема.
Пробовал закидывать проект и файлзиллой и архивом и как только не пробовал.
Данный баг никак не логируется. Не знаю что делать(((
Блин. Тему перепутал. Эта проблема решена.
Да, но проблема оказалась в другом месте. Из-за того, что сессия генерится все время новая, то и токен неправильный.
Когда я создавал тему я думал, что проблема в этом, но когда я перевел сессии в базу, то обнаружил, что эта проблема вытекает из-за сессий.
База создавалась с помощью artisan
Проблема даже не в методе. Проблема в том, что сессия создается каждый раз при обращении к сайту в любом месте. Нажал F5 новая сессия и т.д. Может есть какой-то определенный порядок переноса ларавел на хостинг?
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('index');
});
Route::get('/admin', function () {
return view('admin.index');
})->name('admin');;
Route::resource('admin/room', 'RoomController');
Если что, сам сайт fomintimur.ru
а гит https://github.com/etosites/krim.house/ … ature/crud ветка feature/crud
Вот мой .env
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:uQnVmhkaIDQoIsKtasdVA8/s7w0scbPFux9a+ExwDH+W24=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=adsad
DB_USERNAME=adsad
DB_PASSWORD=asdad
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=database
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
В общем проблема с сессиями. Создает каждый раз новую сессию и из-за этого ну никак не может пройти проверку токена формы
Почему-то не передает куку.:|
На моем localhoste все нормально. Одна сессия на человека, а не на каждоее обновление страницы.
Это при переносе на хостинг
Всем привет!))
Уже перепробовал все.
И вставлял в .env
SESSION_DOMAIN="${APP_URL}"
и
SESSION_DRIVER=database
И выполнял
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
chmod -R 777 storage/
php artisan key:generate
И добавлял в форму, хотя там уже есть он.
{{@csrf}}
Не знаю, что делать и как отловить ошибку уже.:(
В базе, в таблице с сессиями при каждой отправке формы создается новая запись почему-то.
Так я тоже пробовал. Просто мне нужно было на /admin/room/1/edit отправить форму в контроллер в update и если я отправлял его в контроллер, как я это делал, то логично, что ларавел отправлял его на /admin/room/1, а я вчера весь мозг сломал. Решил отправлять данные не во вью, а делать
return view('admin.room.edit', ['room' => $room]);//удалил
return redirect()->route('room.edit', [$room]);
PUT|PATCH | admin/room/{room} | room.update | App\Http\Controllers\RoomController@update | web |
DELETE | admin/room/{room} | room.destroy | App\Http\Controllers\RoomController@destroy | web |
GET|HEAD | admin/room/{room}/edit | room.edit | App\Http\Controllers\RoomController@edit | web
Всем привет!
Есть форма и ну никак не получается добиться экшена http://test.com/admin/room/9/edit
{{ Form::open(['url' => action('RoomController@update', $room->id), 'files' => true, 'method' => 'PATCH']) }}
. Я пробовал вручную вписывать путь, пробовал и через route(). Не понимаю в чем проблема:(
Если просто добавить '/edit' , то после отправки формы я получу
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message
Я вчера хорошо в этом разобрался. Фишка в том, что ларавел не может записать логи из-за отсутствия прав на запись, но ошибку он мне не выдавал в окно браузера, поэтому я и решил запустить скрипт в консоле.
В случае, если я запускаю в браузере, то в логах апача та самая ошибка, описанная выше.
[Tue Dec 25 04:37:19.134650 2018] [php7:error] [pid 20252] [client 127.0.0.1:59706] PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/events.com/public_html/quickstart/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/events.com/public_html/quickstart/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:87\nStack trace:\n#0 /var/www/events.com/public_html/quickstart/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\\Handler\\StreamHandler->write(Array)\n#1 /var/www/events.com/public_html/quickstart/vendor/monolog/monolog/src/Monolog/Logger.php(289): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)\n#2 /var/www/events.com/public_html/quickstart/vendor/monolog/monolog/src/Monolog/Logger.php(565): Monolog\\Logger->addRecord(400, Object(UnexpectedValueException), Array)\n#3 /var/www/events.com/public_html/quickstart/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202): Monolog\\Logger->error(Object(UnexpectedValueException), Array)\n#4 /var/www/events.com/public_html/quickstart/vendor in /var/www/events.com/public_html/quickstart/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 87, referer: [url]http://events.com/quickstart/public/[/url]
Но стоит запустить в консоле, то выводит
php public/index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel Quickstart - Basic</title>
<!-- Fonts -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css" rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/css?family=Lato:100,300,400,700" rel='stylesheet' type='text/css'>
<!-- Styles -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
font-family: 'Lato';
}
.fa-btn {
margin-right: 6px;
}
</style>
</head>
<body id="app-layout">
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<!-- Branding Image -->
<a class="navbar-brand" href="http://:">
Task List
</a>
</div>
</div>
</nav>
<div class="container">
<div class="col-sm-offset-2 col-sm-8">
<div class="panel panel-default">
<div class="panel-heading">
New Task
</div>
<div class="panel-body">
<!-- Display Validation Errors -->
<!-- New Task Form -->
<form action="http://:/task" method="POST" class="form-horizontal">
<input type="hidden" name="_token" value="g1BMPIMy8syWiXTDf4jSOvsST4sn8OcF3TMkklCm">
<!-- Task Name -->
<div class="form-group">
<label for="task-name" class="col-sm-3 control-label">Task</label>
<div class="col-sm-6">
<input type="text" name="name" id="task-name" class="form-control" value="">
</div>
</div>
<!-- Add Task Button -->
<div class="form-group">
<div class="col-sm-offset-3 col-sm-6">
<button type="submit" class="btn btn-default">
<i class="fa fa-btn fa-plus"></i>Add Task
</button>
</div>
</div>
</form>
</div>
</div>
<!-- Current Tasks -->
</div>
</div>
<!-- JavaScripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</body>
</html>
Это та самая, всем знакомая домашняя страница по умолчанию после установки.
После ее запуска все начинает работать, хотя прав на запись я не давал
Никаких комманд, типо этой:
sudo chmod -R 755 /var/www
я не запускал.
Нет, просто запускаю индекс, что и в браузере.
php public/index.php
Всем доброго времени суток! Устанавливаю ларавел.
Версия Laravel: 5.3
Версия PHP: 7.2 и 7.3
Операционная система и её версия: Linux Debian
Вендор и версия Веб-сервера: Apache/2.4.37
Задача, что должно происходить _в целом_, техническое задание:
// Запуск welcome страницы
Что произошло, текст ошибки, если есть:
// В браузере белый экран после установки. Ошибок нет.
Чего вы ожидали получить:
// Хочу получить отображение страницы, но браузер ничего не выдает.
Варианты/догадки, почему это произошло:
// Какая-то магия
Пробую запустить в терминале и оЧудо: выдает мне исходный код страницы.
После этого запускаю в браузере запускается тоже.
Пробовал так 2 раза, что бы точно узнать, что причина в этом.
Объясните, пожалуйста. В терминале php 7.3, в браузере 7.2
Страницы 1