Laravel по-русски

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

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

#1 Re: Laravel 5.x » Проверить, снят ли номер на данный диапозон дат. » 17.03.2019 11:07:43

удобно как две одинаковые даты.

Про это я не подумал. Вроде бы да, но тут все зависит от формулировки и про это я не подумал. В форме я указываю это, как "дата вьезда" и "дата выезда" и тут все логично. Но номер будет забронирован по факту с даты вьезда по дату выезда минус один день.
Но я храню в datetime ведь и когда следующий юзер скажет, что хочет забронировать с субботы до вс, то по идее он имеет в виду свободный номер с 12:00 субботы, а он занят до 12:00 субботы. Вот это нужно тоже протестить! Спасибо)

#2 Laravel 5.x » Проверить, снят ли номер на данный диапозон дат. » 17.03.2019 02:48:47

FominTimur
Ответов: 4

Всем привет. Я долго ломал голову, как проверить, снят ли номер на определенный диапозон.
Хочу просто узнать, может есть более компактное решение.

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;
            }

#3 Re: Laravel 5.x » Новая сессия при обновлении страницы. » 09.03.2019 13:50:02

Я пробовал давать различные настройки для http only  и secure, но не помогает.

#4 Re: Laravel 5.x » Новая сессия при обновлении страницы. » 09.03.2019 13:37:46

Вы все правильно говорите. Я посмотрел. В тело страницы я вообще ничего не вывожу для тестирования. Там пусто. Но я нашел, по крайней мере из-за чего такая пробема. Дело в SSL сертификате. У меня установлен SSL на мой домен и он не отдает некоторые заголовки, а на том же хосте, где нет ssl все нормально

DILOChmOIFM.jpg
96rSryAtT6s.jpg

#5 Re: Laravel 5.x » Новая сессия при обновлении страницы. » 08.03.2019 11:26:05

Я пробовал удалять все из шаблона а в public/index.php error_reporting(E_ALL);
Но ошибок нет, а сессии создаются.
Я пробовал искать регуляркой любой символ перед <?php но нет, находит только в artisan. Не знаю где это и как поймать. В логах пусто. Ведь не может быть ларавел изначально быть с ошибками.

#6 Re: Laravel 5.x » Новая сессия при обновлении страницы. » 07.03.2019 19:53:49

Это все я проверял и смотрел. И  выводил пустую страницу, и пробовал с куками и на http и на https. Проблема такая всплывала, но решить ее не получилось.
Перенес на другой хостинг и все заработало. Так бы не хотелось держать проекты на 2-х хостингах.
Я пользуюсь бегетом, но непонятно что там не так.

#7 Laravel 5.x » Новая сессия при обновлении страницы. » 04.03.2019 23:49:10

FominTimur
Ответов: 9

На каждый запрос ларавел создает новую сессию. Нажал 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 и т.д. Помогите, может была такая проблема.
Пробовал закидывать проект и файлзиллой и архивом и как только не пробовал.
Данный баг никак не логируется. Не знаю что делать(((

#8 Re: Laravel 5.x » form edit action » 04.03.2019 22:23:10

Блин. Тему перепутал. Эта проблема решена.

#9 Re: Laravel 5.x » form edit action » 04.03.2019 19:53:57

Да, но проблема оказалась в другом месте. Из-за того, что сессия генерится все время новая, то и токен неправильный.
Когда я создавал тему я думал, что проблема в этом, но когда я перевел сессии в базу, то обнаружил, что эта проблема вытекает из-за сессий.
OPVNdlVuEZk.jpg
База создавалась с помощью artisan

#10 Re: Laravel 5.x » form edit action » 04.03.2019 19:44:50

Проблема даже не в методе. Проблема в том, что сессия создается каждый раз при обращении к сайту в любом месте. Нажал F5 новая сессия и т.д. Может есть какой-то определенный порядок переноса ларавел на хостинг?

#11 Re: Laravel 5.x » form edit action » 04.03.2019 19:30:08

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

#12 Re: Laravel 5.x » 419 Sorry, your session has expired » 03.03.2019 23:00:43

Вот мой .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}"

#13 Re: Laravel 5.x » 419 Sorry, your session has expired » 03.03.2019 22:38:53

В общем проблема с сессиями. Создает каждый раз новую сессию и из-за этого ну никак не может пройти проверку токена формы

#15 Re: Laravel 5.x » 419 Sorry, your session has expired » 03.03.2019 19:34:39

На моем localhoste все нормально. Одна сессия на человека, а не на каждоее обновление страницы.

#17 Laravel 5.x » 419 Sorry, your session has expired » 03.03.2019 19:22:55

FominTimur
Ответов: 6

Всем привет!))
Уже перепробовал все.
И вставлял в .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}}



Не знаю, что делать и как отловить ошибку уже.:(
В базе, в таблице с сессиями при каждой отправке формы создается новая запись почему-то.

#18 Re: Laravel 5.x » form edit action » 03.03.2019 10:40:09

Так я тоже пробовал. Просто мне нужно было на /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

#19 Laravel 5.x » form edit action » 03.03.2019 03:29:27

FominTimur
Ответов: 9

Всем привет! big_smile
Есть форма и ну никак не получается добиться экшена 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

#20 Re: Laravel 5.x » Магия при установке » 25.12.2018 12:38:45

Я вчера хорошо в этом разобрался. Фишка в том, что ларавел не может записать логи из-за отсутствия прав на запись, но ошибку он мне не выдавал в окно браузера, поэтому я и решил запустить скрипт в консоле.
В случае, если я запускаю в браузере, то в логах апача та самая ошибка, описанная выше.

[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

я не запускал.

#21 Re: Laravel 5.x » Магия при установке » 25.12.2018 12:25:23

Нет, просто запускаю индекс, что и в браузере.

php public/index.php

#22 Laravel 5.x » Магия при установке » 24.12.2018 19:41:45

FominTimur
Ответов: 4

Всем доброго времени суток!  Устанавливаю ларавел.
Версия Laravel: 5.3
Версия PHP: 7.2 и 7.3
Операционная система и её версия: Linux Debian
Вендор и версия Веб-сервера: Apache/2.4.37

Задача, что должно происходить _в целом_, техническое задание:
    // Запуск welcome страницы
Что произошло, текст ошибки, если есть:
    // В браузере белый экран после установки. Ошибок нет.
Чего вы ожидали получить:
    // Хочу получить отображение страницы, но  браузер ничего не выдает.
Варианты/догадки, почему это произошло:
    // Какая-то магия
Пробую запустить в терминале и оЧудо: выдает мне исходный код страницы.
После этого запускаю в браузере запускается тоже.
Пробовал так 2 раза, что бы точно узнать, что причина в этом.
Объясните, пожалуйста. В терминале php 7.3, в браузере 7.2

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