Laravel по-русски

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

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

#1 Laravel 6/7/8/9 » Laravel SSR VUE как установить? » 09.06.2020 00:38:18

Kirir
Ответов: 0

Есть пример
https://github.com/anthonygore/vue-js-laravel-ssr

Он разворачивается без проблем, но не могу понять как поставить расширение для js в open server или в принципе в php, ведь расширения php обычно в виде dll а тут множество файлов
https://github.com/phpv8/v8js

#3 Laravel 6/7/8/9 » Проблеме с placeholder у input в iE11 » 30.05.2020 18:05:01

Kirir
Ответов: 1

Всем привет.
Моя проблема связана с vue, но оч прошу помочь, т.к реалньо непонятно что с ней делать.

У меня непонятная проблема с placeholder у input, который принимает значение из свойства объекте родителя.
В ларавел-проекте есть дочерний компонент, который выводит значение из объекта(свойства placeholder со строкой ) родителя в placeholder обычного input-а
https://gitlab.com/Kir1/arenda/-/blo...utPassword.vue
Вот миксин
https://gitlab.com/Kir1/arenda/-/blo...ndart/field.js

Проблема в ie11 - из-за присваивания плейсхолдеру значения из свойства объекта родителя срабатывает @input при загрузке страницы.

Реально, если убрать placeholder или в ф-ции computed возвращать просто значение , а не значение из объекта, то с @input проблем нет.

Вот проект.
https://gitlab.com/Kir1/arenda.git

Ветка placeholder

Там страница профиль, внизу поля "старый пароль", увидите, что у них в ie11 сами срабатывают ф-ции из @input
/profile

#6 Laravel 6/7/8/9 » Impossible to create the root directory в windows 10 » 22.05.2020 18:40:10

Kirir
Ответов: 2

https://github.com/Bratislavman/cinemastudios.git всем привет, посмотрите плз почему не даёт файлы сохранять - ошибка Impossible to create the root directory (код можете увидеть в StudioController), вернее, файл сохраняет физически, но генерит ошибку и следующий за этим код не проходит(после npm сразу на главной сайта форма для экшена create будет) п.с ветка dev windows 10

#7 Re: Поиск работы » Ищу работу на постоянку » 01.04.2020 18:23:50

Поднимаю тему.
п.с в последнем проекте(13 месяцев) получил очень интересный опыт работы с socket.io и React

#8 Поиск работы » Ищу подработки(8 часов в неделю максимум) » 20.01.2020 16:35:54

Kirir
Ответов: 1

Ищу подработки, (8 часов в неделю максимум).
Laravel знаю хорошо, но под высокие нагрузки проекты не разрабатываю.
Фронтенд делаю на react, есть значительный опыт в создании spa(+ websocket io для работы в реальном времени)

#11 Laravel 6/7/8/9 » Не работает руссификация » 09.11.2019 15:44:58

Kirir
Ответов: 3

Всем привет, я азял папку рус языка отсюда
https://github.com/caouecs/Laravel-lang … ter/src/ru

И положил её в
resources\lang\ru

В
\config\app.php
Я поставил locale на ru
Затем почистил кеш php artisan config:cache

И всё равно форма регистрации и авторизации на англ. В чём может быть проблема? В доке всё также как и у 5 версии.

#12 Re: Laravel 5.x » Коллекция на фронте теряет свойства » 16.08.2019 20:25:40

Не в hidden, там фигня в том, что теряются именно свойства с коллекциями и массивами в значении. С простыми данными не теряются.

#13 Re: Laravel 5.x » Echo Server не работает Private Channel - Client can not be auth 405 » 13.08.2019 19:05:58

А на сервере была ошибка
Error: connect ECONNREFUSED 172.31.16.20:443
Я создал этот айпишник в айсп-менеджере и думал что он добавлен, а оказалось. это в другом месте надо было делать.

#14 Laravel 5.x » Коллекция на фронте теряет свойства » 25.07.2019 18:02:30

Kirir
Ответов: 2

Коллекция при передаче из события на фронт(echo server) теряет добавленные свойства, при этом можно передать отдельно атрибуты и отношения и они приходят нормально.
UBlCp.jpg
Ссылка на скрин

$users = User::where('id', '=', $request->userId)
                ->orWhere('id', '=', $userId)
                ->with('user_fields')
                ->with('user_session')
                ->get()
                ->keyBy('id');

            $users = $users->map(function ($user) {
                $user->online = $user->user_session ? true : false;
                $user->friendship = 'confirm';
                return $user;
            });

            event(new RequestFriendshipAccepted($friendship->id, $userId, $users[$request->userId], $countIncoming, true));

#15 Re: Laravel 5.x » После удаления записи и генерации события(с записью) возникает ошибка » 23.07.2019 19:06:10

Притом запись удаляется и в событие запись попадает, странная ошибка

#16 Laravel 5.x » После удаления записи и генерации события(с записью) возникает ошибка » 23.07.2019 18:57:19

Kirir
Ответов: 1

После удаления записи и генерации события(с записью) возникает ошибка. Если произвести удаление после создания событий, то ошибки не возникает, но сама ошибка странная.

{"message":"No query results for model [App\\Models\\Friends].","exception":"Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException

if ($friendship) {
            $countIncoming = DB::table('friends')->where([
                ['confirm', '=', $confirm],
                [$columnCountFrienship, '=', $id1]
            ])->count() - 1;
            $friendship->delete();
            event(new RequestFriendshipCancel($friendship, $id1));
            event(new RequestFriendshipCancel($friendship, $id2, $countIncoming, true));

#17 Re: Laravel 5.x » Не меняется значение свойства у eloquent объекта » 23.07.2019 18:53:03

Пока ток убедился, что все значения свойств меняются кроме тех, у которых в значении коллекция или массив.

#18 Laravel 5.x » Не меняется значение свойства у eloquent объекта » 21.07.2019 18:16:51

Kirir
Ответов: 1

В строке $friendship->friendship создаются свойство и меняся далее в коде, однако свойство $friendship->user_fields не меняет свои значения

$friendships->map(function ($friendship, $id) use ($userId, &$array) {
            $friendship->friendship = 'null';
 
            $friendship->online = $friendship->user_session ? true : false;
 
            if ($friendship->confirm) {
                $friendship->friendship = 'confirm';
                if ($friendship->online) {
                    $array['friends']['online']['objects'] [$id] = $friendship;
                    $array['friends']['online']['keys'] [] = $id;
                }
                $array['friends']['all']['objects'] [$id] = $friendship;
                $array['friends']['all']['keys'] [] = $id;
            } else {
                if ($friendship->user_id == $userId) {
                    \Debugbar::info((string)$friendship);
                    $friendship->user_fields = '';
                    $friendship->user_session = '';
                    \Debugbar::info((string)$friendship);
                    $array['friendsRequests']['outgoing']['objects'] [$id] = $friendship;
                    $array['friendsRequests']['outgoing']['keys'] [] = $id;
                } elseif ($friendship->friend_id == $userId) {
                    $array['friendsRequests']['incoming']['objects'] [$id] = $friendship;
                    $array['friendsRequests']['incoming']['keys'] [] = $id;
                }
            }
 
            return $friendship;
        });

строка 16
{"id":2,"user_id":3,"friend_id":1,"confirm":0,"created_at":"2019-07-11 15:59:53","updated_at":"2019-07-11 15:59:53","friendship":"null","online":true,"user_fields":[{"id":5,"user_id":3,"fields_id":35,"value":"\u0410\u043d\u043e\u043d\u0438\u043c"},{"id":6,"user_id":3,"fields_id":36,"value":"\u0410\u043d\u043e\u043d\u0438\u043c\u0443\u0441"}],"user_session":{"id":"rz6CwEuU8qwhZIzWphuhjxAkmRmAPEjahuQEWV1y","last_activity":1563716292,"user_id":3},"friend_fields":[{"id":1,"user_id":1,"fields_id":35,"value":"\u041b\u0435\u0433\u043e\u043b\u0430\u0441"},{"id":2,"user_id":1,"fields_id":36,"value":"\u042f\u043a\u043e\u0432\u043b\u0435\u0432\u0438\u0447"}],"friend_session":null}

строка 19
info
{"id":2,"user_id":3,"friend_id":1,"confirm":0,"created_at":"2019-07-11 15:59:53","updated_at":"2019-07-11 15:59:53","friendship":"null","online":true,"user_fields":[{"id":5,"user_id":3,"fields_id":35,"value":"\u0410\u043d\u043e\u043d\u0438\u043c"},{"id":6,"user_id":3,"fields_id":36,"value":"\u0410\u043d\u043e\u043d\u0438\u043c\u0443\u0441"}],"user_session":{"id":"rz6CwEuU8qwhZIzWphuhjxAkmRmAPEjahuQEWV1y","last_activity":1563716292,"user_id":3},"friend_fields":[{"id":1,"user_id":1,"fields_id":35,"value":"\u041b\u0435\u0433\u043e\u043b\u0430\u0441"},{"id":2,"user_id":1,"fields_id":36,"value":"\u042f\u043a\u043e\u0432\u043b\u0435\u0432\u0438\u0447"}],"friend_session":null}

#21 Laravel 5.x » Не работает echo server локально » 19.06.2019 20:55:11

Kirir
Ответов: 1

Не работает echo server(открытый канал не приходит на фронт, а закрытый выдаёт ошибку) в open- server

https://gitlab.com/Kir1/laral-echo.git

\routes\web.php
На главной странице грузится vue компонент, а на странице test генерируется событие.

[20:49:40] - XbAcDqCodDCCwSc4AAAn joined channel: survey.1
Channel: laravel_database_survey.1
Event: App\Events\MessagePushed

В последнем коммите показано в каких файлах весь код.

Судия по логам эхо-сервера, всё работает, однако на главной странице у компонента слушание события не проходит(консоль лог не выдаёт).

Сайт стоит на open server(redis настроен, никаких ошибок нет ни в логах проекта ларавел, ни в логах сервера).

#22 Laravel 5.x » Как правильно сделать подключение и отсоединение канала чата » 19.06.2019 15:00:19

Kirir
Ответов: 0

Сделал у себя в проекте соц сети страничку, где юзер может видеть окошки с чатами(нажимать на них подгружать сообщения), в каждом окошке видно последнее сообщение чата. Поставил эхо сервер и прослушивание на уровне js. Всё работает, но хочу как-нить оптимизировать подключение к чатам.

Сейчас я по сути при каждой подгрузке чатов извне сначала отключаю канал чата на фронте, а потом подключаю, что бы не создавались копии подключения(ведь в таком случае на клиенте событие дублируется сток раз, скок подключений).

Компонент с подключение чата.

class Messages extends React.Component {
    componentDidMount() {
        this.props.getChats();
    }
 
    render() {
        let messages = this.props.messages, content;
 
    for (let chatId in messages.chats) {
            this.props.echoPushMessage(chatId);
        }

/////...... иниже подключение в редакс 
const mapDispatchToProps = (dispatch,state, props) => {
    return {
        getChats: () => dispatch(getChats()),
        getChatMessages: (chatId, messageId) => dispatch(getMessages(chatId, messageId)),
        echoPushMessage: (chatId) => dispatch(echoPushMessage(chatId)),
        messageSend: (msg, chatId) => dispatch(messageSend(msg, chatId)),
        messagesSliderDownTrue: () => dispatch(messagesSliderDownTrue()),
        messagesSliderDownFalse: () => dispatch(messagesSliderDownFalse()),
        writeMessage: (chatMessage, chatId) => dispatch(writeMessage(chatMessage, chatId))
    };
};
 
export default connect(
    mapState2Props,
    mapDispatchToProps
)(Messages);

И echoPushMessage

export function echoPushMessage(chatId) {
    return function (dispatch) {
        window.Echo.leave(`chat.${chatId}`);
        window.Echo.channel(`chat.${chatId}`)
            .listen('PushMessageEvent', (data) => {
                dispatch({
                    type: MESSAGES_ECHO_PUSH_MESSAGE,
                    data
                });
            })
    };
}

#23 Laravel 5.x » Echo Server не работает Private Channel - Client can not be auth 405 » 30.05.2019 19:50:08

Kirir
Ответов: 4

https://medium.com/@dennissmink/laravel … 7a9e57bae9

window.Echo.private(`chat.${chatId}`)
            .listen('PushMessageEvent', (data) => {
                console.log('echoPushMessage133', data);

                dispatch({
                    type: MESSAGES_ECHO_PUSH_MESSAGE,
                    data
                });
            })
<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class PushMessageEvent implements ShouldBroadcast
{
    public $chatMessage;
    public $chatId;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($chatMessage, $chatId)
    {
        $this->chatMessage = $chatMessage;
        $this->chatId = $chatId;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('chat.'.$this->chatId);
    }
}

routes\channels.php

Broadcast::channel('chat.{chatId}', function ($user, $chatId) {

    \Illuminate\Support\Facades\Log::info('1111');

    return true;

    return ChatMessage::where([
            ['user_id', $user->id],
            ['chat_id', $chatId]
        ])->count() > 0;
});

Если я меняю приват на обычный канал(в js и php), то всё работает, а с приватным получатся ошибка

⚠ [19:39:47] - wVU2a2oSqfPYcBOAAAAG could not be authenticated to private-chat.3
{
    "message": "The POST method is not supported for this route. Supported methods: GET, HEAD.",

Client can not be authenticated, got HTTP status 405

А затем сразу идёт

Channel: private-chat.3
Event: App\Events\PushMessageEvent

Но при этом в логах ничего не появляется и в js тоже событие не срабатывает.

#24 Re: Laravel 5.x » Как получить количество сообщений из другой таблицы в orm запросе? » 24.05.2019 20:32:27

Варинаты которые я не знаю как приурочить

->with(['unread_messages_count' => function($query)
            {
                $query->orderBy('created_at', 'desc');
                MessageChat::where('active', 1)->where('read',0)->count();
            }])
             //->select(DB::raw('count(*) as chat_messages'))
           ->join('chat_messages', 'chat_messages.chat_id', '=', 'orders.user_id')
            ->select('users.id', 'contacts.phone', 'orders.price');

#25 Laravel 5.x » Как получить количество сообщений из другой таблицы в orm запросе? » 24.05.2019 20:29:41

Kirir
Ответов: 1

Как получить количество сообщений из другой таблицы в orm запросе?

     $messages = ChatMessage::where('user_id', Auth::id())
            ->orderBy('created_at', 'desc')
            ->select(['chat_id'])
            ->distinct()
            ->with('chat.last_message.user_fields')
            ->with('chat.last_message.user_session')
            ->get();
  <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ChatMessage extends Model
{
    protected $fillable = ['chat_id','user_id', 'text'];

    public function user_fields()
    {
        return $this->hasMany('App\Models\UserFieldsValues','user_id','user_id')
            ->where('fields_id',35)
            ->orWhere('fields_id',36);
    }

    public function user_session()
    {
        return $this->hasOne('App\Models\Session','user_id','user_id')
            ->orderBy('last_activity', 'desc')
            ->where('last_activity','>', time()-5*60)
            ->select(['id','last_activity', 'user_id']);
    }

    public function chat()
    {
        return $this->hasOne('App\Models\Chat','id','chat_id');
    }
}
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Chat extends Model
{
    protected $fillable = ['name','id'];

    public function last_message()
    {
        return $this->hasOne('App\Models\ChatMessage')->orderBy('created_at', 'desc');
    }

    public function unread_messages_count()
    {
        return $this->hasMany('App\Models\ChatMessage')->where('read',0)->count();
    }
}

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