Laravel по-русски

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

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

#1 Laravel 6/7/8/9/10 » @livewireStyles за чем эта директива? » 19.01.2021 23:09:37

RizONE
Ответов: 0

Собственно сабж.
Не пойму, если так подключаются стили livewire, т.е. какой то конкретный файл css, то почему эта директива обычно идет последней? Не потрут ли эти, плоследние подключенные стили мои собственные стили?
Смотрю подключение tailwindcss:

/* ./resources/css/app.css */
@tailwind base;
@tailwind components;
@tailwind utilities;

и

<!-- Styles -->
<link rel="stylesheet" href="{{ url(mix('css/app.css')) }}">
@livewireStyles

в результате какие же стили я получу?

#2 Laravel 6/7/8/9/10 » В зависимости от роли поменять стартовую страницу » 11.01.2021 19:24:42

RizONE
Ответов: 0

Доброе!
Собственно сабж. Добавил в проект роли. Теперь при входе пользователю с ролью "роль_1" нужно направить на страницу "страница роли 1" И соответственно с другой ролью. Меня больше не реализация, а подход интересует. Как это правильно делать?
Видится, например, такой подход: У всех пользователей при логине открывается одна и та же страница, но внутри страницы через @if в зависимости от роли идет перенаправление...
Или, создаем для логина один класс, а в классе через render() возвращаем return view(...) ту или иную страницу.
Как правильнее, как это делается?

#3 Laravel 6/7/8/9/10 » что нужно сделать, чтобы использовать <x-table> » 24.12.2020 23:08:52

RizONE
Ответов: 0

Собственно сабж.
как только добавляю <x-table></x-table> возникает ошибка, хотя

<x-slot name="header">
    <h2 class="font-semibold text-xl text-gray-800 leading-tight">
        Надпись ({{ $org_name }})
    </h2>
</x-slot>

вполне себе работает

#4 Re: Laravel 6/7/8/9/10 » Не получается передать параметры из <select> » 19.12.2020 21:41:57

Проблема может и в том, что таблица workers организована так:

public function up()
    {
        Schema::create('workers', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')->constrained();
            $table->foreignId('organization_id')->constrained();
            $table->boolean('active');
            $table->timestamps();
        });
    }

т.е. тут 2 внешних ключа
и полная ругань:

QLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`bill`.`workers`, CONSTRAINT `workers_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)) (SQL: insert into `workers` (`user_id`, `organization_id`, `active`, `updated_at`, `created_at`) values (0, 0, 1, 2020-12-19 18:18:43, 2020-12-19 18:18:43))

#5 Re: Laravel 6/7/8/9/10 » Не получается передать параметры из <select> » 19.12.2020 21:20:34

Проверил через dd($request->all()) - форма возвращает и `user_id` и `organization_id`, но ошибка сохраняется

#6 Laravel 6/7/8/9/10 » Не получается передать параметры из <select> » 19.12.2020 20:49:41

RizONE
Ответов: 2

Селект организован так:

<label for="user_id" class="block text-sm font-medium text-gray-700">Пользователь</label>
<select id="user_id" name="user_id" autocomplete="country" class="mt-1 block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
   @foreach($users as $user)
      <option value="{{ $user->id }}">{{ $user->name }}</option>
   @endforeach
</select>

обработка в соответствующем классе:

public function store() {
        $this->validate([
            'user_id' => 'required',
            'organization_id' => 'required',
        ]);

        Worker::updateOrCreate(['id' => $this->worker_id], [
            'user_id' => $this->user_id,
            'organization_id' => $this->organization_id,
            'active' => $this->active
        ]);

    }

Но в результате имею постоянно ошибку:

SQL: insert into `workers` (`user_id`, `organization_id`, `active`, `updated_at`, `created_at`) values (0, 0, 1, 2020-12-19 17:46:40, 2020-12-19 17:46:40)

т.е. получается, что не передаются поля из селекта, подставляются 0 и 0
В чем ошибка? И как бы посмотреть, что он там получает при создании нового элемента?

#7 Re: Laravel 6/7/8/9/10 » пара вопросов по Livewire » 18.12.2020 00:44:23

вопросы снимаются, как всегда, после публикации нашел отличную статью:
https://laravel-school.com/posts/making … ivewire-63

#8 Laravel 6/7/8/9/10 » пара вопросов по Livewire » 18.12.2020 00:06:30

RizONE
Ответов: 1

Доброе.
Установил проект с Laravel Jetstream с Tailwind CSS и Livewire и не совсем понимаю как это все работает. Возможно и не так делаю.
имеем роут:

Route::get('/directory/Organizations', 'App\Http\Controllers\OrganizationController@all_org')->name('Organizations');

и контроллер

class OrganizationController extends Controller
{
    public function all_org() {
    	return view('organizations', ['orgs' => Organization::all()]);
    }
}

1) для вывода списка организаций приходится создавать 3 файла (точка входа):
resources\views\organizations.blade.php

<x-app-layout>
    <div class="py-12">
        <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
            <div class="bg-white overflow-hidden shadow-xl sm:rounded-lg">
                @livewire('orgshow')
            </div>
        </div>
    </div>
</x-app-layout>

resources\views\livewire\orgshow.blade.php (вывод данных)

<div class="bg-gray-200 bg-opacity-25 grid grid-cols-1 md:grid-cols-2">
    <div class="p-6">
        @foreach ($orgs as $el)
            {{ $el->name }}
        @endforeach
    </div>
</div>

и все это не работает пока не создашь третий файл app\Http\Livewire\orgshow.php (какая-то прослойка)

<?php
namespace App\Http\Livewire;
use Livewire\Component;

class Orgshow extends Component
{
    public function render()
    {
        return view('livewire.orgshow');
    }
}

Получается надо делать довольно много манипуляций. Или я не так делаю?
2) при таком подходе, при переходе на ссылку вываливается ошибка, что переменная orgs не определена. Как передать в конечный вью данную переменную?

#9 Laravel 6/7/8/9/10 » Где прописан какой файл используется как точка входа на сайт? » 08.12.2020 14:39:13

RizONE
Ответов: 2

Доброе.
В одних проектах вижу

Route::get('/', function () {
    return view('home');
});

и соответственно по пути resources->view->home.blade.php
Но в большинстве случаев этого home.blade.php нет, зато есть resources->view->front->template.blade.php который загружается первым.
А  где указана эта связь
'home' <=> template.blade.php

#10 Laravel 6/7/8/9/10 » Авторизация. Laravel 8 » 07.12.2020 17:38:05

RizONE
Ответов: 1

Доброе!
Помогите плиз разобраться с сабжем.
Создал обычный проект, без авторизации. Вижу во вью welcome такие строки

@if (Route::has('login'))
 <div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
  @auth
   <a href="{{ url('/home') }}" class="text-sm text-gray-700 underline">Home</a>
   @else
   <a href="{{ route('login') }}" class="text-sm text-gray-700 underline">Login</a>
   @if (Route::has('register'))
     <a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 underline">Register</a>
   @endif
  @endauth
</div>
@endif

что они делают понятно, но где в какой папке ищется имя маршрута 'login'

создаю точно также второй проект, но на него устанавливаю уже Laravel Fortify
создается такое же вью welcome, но при запуске уже появляются поля для логина.
Но я не могу найти что нить связанное с 'login'.
Просьба подсказать где находится этот маршрут?

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