Я борюсь с проблемой.
Я хочу создать конструктор форм с новым синтаксисом x-компонента laravel, но мне не удалось получить данные из родительского компонента
blade-файл:
<x-input name="email">
<x-email>{{ __('E-mail Address') }}</x-email>
</x-input>
компоненты / форма / входы / master.blade. php:
<div class="form-group">
{{ $slot }}
</div>
компоненты / форма / входы / email.blade. php:
<input type="email" class="form-control" placeholder="{{ $placeholder ?? $slot }}" name="{{ $name }}">
выбрасывает: \ViewException Undefined variable: name
Я могу получить атрибут name в электронной почте, например: <x-email name="email"/>
, но я не хочу этого делать. Поскольку у меня может быть как минимум 20+ видов ввода, таких как пароль, текст, выберите et c.
Я планирую использовать <x-input/>
для общих целей, таких как сообщения проверки, метки и т. Д. c. и каждый x- * содержит определенные c атрибуты, такие как: опции для x-select,: проверено для флажка или радио ...
Components \ Input. php:
<?php
namespace App\View\Components\Form;
use Illuminate\View\Component;
class Input extends Component
{
public $name;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct($name)
{
$this->name = $name;
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\View\View|string
*/
public function render()
{
return view('components.form.inputs.master');
}
}
Components \ Email. php:
<?php
namespace App\View\Components\Input;
use Illuminate\View\Component;
class Email extends Component
{
/**
* Create a new component instance.
*
* @return void
*/
public function __construct()
{
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\View\View|string
*/
public function render()
{
return view('components.form.inputs.email');
}
}
Если я вставлю $ name в Email. php в конструкторе, это говорит о неразрешенной зависимости $ name.