Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Собственно сабж.
Не пойму, если так подключаются стили livewire, т.е. какой то конкретный файл css, то почему эта директива обычно идет последней? Не потрут ли эти, плоследние подключенные стили мои собственные стили?
Смотрю подключение tailwindcss:
/* ./resources/css/app.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
и
<!-- Styles -->
<link rel="stylesheet" href="{{ url(mix('css/app.css')) }}">
@livewireStyles
в результате какие же стили я получу?
Доброе!
Собственно сабж. Добавил в проект роли. Теперь при входе пользователю с ролью "роль_1" нужно направить на страницу "страница роли 1" И соответственно с другой ролью. Меня больше не реализация, а подход интересует. Как это правильно делать?
Видится, например, такой подход: У всех пользователей при логине открывается одна и та же страница, но внутри страницы через @if в зависимости от роли идет перенаправление...
Или, создаем для логина один класс, а в классе через render() возвращаем return view(...) ту или иную страницу.
Как правильнее, как это делается?
Собственно сабж.
как только добавляю <x-table></x-table> возникает ошибка, хотя
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
Надпись ({{ $org_name }})
</h2>
</x-slot>
вполне себе работает
Проблема может и в том, что таблица 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))
Проверил через dd($request->all()) - форма возвращает и `user_id` и `organization_id`, но ошибка сохраняется
Селект организован так:
<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
В чем ошибка? И как бы посмотреть, что он там получает при создании нового элемента?
вопросы снимаются, как всегда, после публикации нашел отличную статью:
https://laravel-school.com/posts/making … ivewire-63
Доброе.
Установил проект с 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 не определена. Как передать в конечный вью данную переменную?
Доброе.
В одних проектах вижу
Route::get('/', function () {
return view('home');
});
и соответственно по пути resources->view->home.blade.php
Но в большинстве случаев этого home.blade.php нет, зато есть resources->view->front->template.blade.php который загружается первым.
А где указана эта связь
'home' <=> template.blade.php
Доброе!
Помогите плиз разобраться с сабжем.
Создал обычный проект, без авторизации. Вижу во вью 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'.
Просьба подсказать где находится этот маршрут?