(function(w, n) {
w[n] = w[n] || [];
w[n].push({itemId: "1"});
})(window, 'superItemWidget');
// в скрипте подгружаемом асинхронно (или просто позже)
// Гипотетическая функция, отвечающая за рендер виджета
const renderItem = (option) => {
console.log(option.itemId + 'is rendered');
}
(function(w, n) {
// если уже есть в пространстве объекты для рендера, вызываем их рендер
if (w[n]) {
w[n].forEach((option) => {
renderItem(option);
});
}
// Для добавляемых после загрузки вешаем рендер на push
w[n] = new function () {
this.push = function(option) {
renderItem(option);
}
}
})(window, 'superItemWidget');
// Код страницы, обрабатываемый после загрузки внешнего скрипта:
(function(w, n) {
w[n] = w[n] || [];
w[n].push({itemId: "2"});
})(window, 'superItemWidget');
public function store(Request $request, StoreBlogTag $store)
$validate = Validator::make($request->all(), $store->rules(), $store->messages());
if ($validate->fails()) {
return redirect('post/create')
->withErrors($validate)
->withInput();
};
Validator::make($request->all(), $store->rules(), $store->messages())->validate();
$tag = Tag::firstOrCreate([
'title' => $request->input('title'),
'slug' => Str::slug($request->input('title'), '-'),
]);
$tag->save();
class BrandController extends Controller
{
// [...]
public function store(SaveBrand $request)
{
$brand = Brand::create($request->all());
return new BrandResource($brand);
}
public function update(SaveBrand $request, Brand $brand)
{
$brand->update($request->all());
return new BrandResource($brand);
}
}
class SaveBrand extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
$rules = [
'name' => [
'required',
'max:100',
Rule::unique('brands')->ignore($this->id)
],
'url' => [
'required',
'max:100',
'url',
Rule::unique('brands')->ignore($this->id)
]
];
// Позволяет редактировать по одному полю в запросе
if ($this->method() == 'PATCH') {
foreach ($rules as $key => $item) {
array_unshift($rules[$key], 'sometimes');
}
}
return $rules;
}
}
class BrandResource extends JsonResource
{
public function toArray($request)
{
return parent::toArray($request);
}
}
#parent #app_body
тоже плохая практика. Но если делать виджет, то надо ведь понимать и принимать, что во внешних сайтах будет плохой код.div > div {
display: flex !important
}
[Vuetify] Multiple instances of Vue detected
(при этом вариант без Vuetify конфликтов не дал). Я просто не уверен, что изолирование может быть панацеей в JS. Если я правильно понимаю, в конечном итоге, через windows это все можно вытащить. Или я не прав?