OctoberCMS вызывает данные другого плагина в выпадающем списке текущего плагина
Я новичок в OctoberCMS и мне нравится, как он работает. В настоящее время я создал два плагина, называемых какТовары а такжеКатегории продукта, Я создал эти плагины, используяПлагин Builder это также очень хороший плагин для создания других плагинов с легкостью.
Теперь дело в том, что в моемКатегории продуктов плагин, у меня просто одно поле называетсяКатегория продукта и пользователь добавит столько категорий, сколько он / она хочет, и этот плагин работает отлично.
И по моемуТовары плагин, у меня есть поле под названиемКатегория продукта который является раскрывающимся полем, и я хочу, чтобы все те категории, которые я создал вКатегории продукта плагины соответственно, но почему-то я не могу реализовать эту функцию. Это то, что я пробовал до сих пор.
plugin.php (примочки \ technobrave \ продукты)
<?php namespace Technobrave\Products;
use System\Classes\PluginBase;
use technobrave\productcategory\Models\ProductCategory as ProductCategory;
use technobrave\products\Models\Product as ProductModel;
class Plugin extends PluginBase
{
public function registerComponents()
{
}
public function registerSettings()
{
}
public function boot()
{
ProductModel::extend(function($model){
$model->hasOne['ProductCategory'] = ['technobrave\productcategory\Models\ProductCategory'];
});
}
}
product.php (Плагинов \ technobrave \ Продукты \ модели)
<?php namespace Technobrave\Products\Models;
use Model;
/**
* Model
*/
class Product extends Model
{
use \October\Rain\Database\Traits\Validation;
/*
* Validation
*/
public $rules = [
'category' => 'required',
'product_brand' => 'required',
'product_channel' => 'required',
'product_type' => 'required',
'client_name' => 'required',
'project_name' => 'required',
'product_description' => 'required',
'banner_image' => 'required',
'product_images' => 'required',
];
public $customMessages = [
'category.required' => 'Please Select Product Category',
'product_brand.required' => 'Please Select Product Brand',
'product_channel.required' => 'Please Select Product Channel',
'product_type.required' => 'Please Select Product Type',
'client_name.required' => 'Please Enter Client Name',
'project_name.required' => 'Please Enter Project Name',
'product_short_description.required' => 'Please Enter Product Short Description',
'product_description.required' => 'Please Enter Product Description',
'banner_image.required' => 'Please select Product Banner Image',
'product_images.required' => 'Please select Product Image(s)',
];
/*
* Disable timestamps by default.
* Remove this line if timestamps are defined in the database table.
*/
//public $timestamps = false;
/**
* @var string The database table used by the model.
*/
public $table = 'technobrave_products_';
public $settingsFields = 'fields.yaml';
public $attachOne = [
'banner_image' => 'System\Models\File'
];
public $attachMany = [
'product_images' => 'System\Models\File'
];
public $belongsTo = [
'ProductCategory'=> ['technobrave\productcategory\Models\ProductCategory']
];
// Here i want my product dropdown categories to be dynamic
public function getCategoryOptions()
{
echo '<pre>';
print_r($ProductCategory);
exit;
//return array();
}
}
Но я продолжаю получать фатальную ошибку, говорящую:
Неопределенная переменная: ProductCategory
Для этого конкретного кода, который я положил вproduct.php
echo '<pre>';
print_r($ProductCategory);
exit;
в вышеplugin.php файл у меня есть ниже код
use technobrave\productcategory\Models\ProductCategory as ProductCategory;
делая это, я пытаюсь получить все категории, которые я уже создал, и каким-то образом пытаюсь показать это в моем раскрывающемся списке.
Я знаю вOctoberCMS при создании плагинов мы можем иметь дело ссвязи логика (то есть hasMany, hasOne и т. д.), но сейчас я хочу добиться этого с помощью внешних плагинов. Я хочу добавить эти категории, которые будут заполнены в методеgetCategoryOptions()
и я верну их в раскрывающемся списке.
Может ли кто-нибудь направить меня, если это возможно так, как я хочу?
Спасибо