Ich bin neu bei OctoberCMS und ich liebe die Art, wie es funktioniert. Zur Zeit habe ich zwei Plugins namens Produkte und Produktkategorien erstellt. Ich habe diese Plugins mit Builder Plugin erstellt, die auch ein sehr gutes Plugin ist, um mit Leichtigkeit andere Plugins zu erstellen.OctoberCMS rufen die Daten eines anderen Plugins im Drop-down-Menü des aktuellen Plugins auf
Nun ist die Sache, in meinem Produkte Kategorien Plugin, habe ich einfach ein einzelnes Feld als Produktkategorie und Benutzer aufgerufen, so viele Kategorien werden hinzufügen, wie er/sie will und dieses Plugin funktioniert gut.
Und in meinem Produkte Plugin, habe ich ein Feld als Produktkategorie genannt, die ein Dropdown-Feld ist, und ich will alle jene Kategorien, die ich jeweils in Produktkategorien Plugins erstellt haben, aber irgendwie bin ich nicht in der Lage zu Implementieren Sie diese Funktion. Das habe ich bisher versucht.
plugin.php (Plugins \ technobrave \ Produkte)
<?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 (Plugins \ technobrave \ Produkte \ Modelle)
<?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();
}
}
Aber ich halte mich immer tödlich Fehlermeldung Meldung:
Undefin ed Variable: Produkt
Für diesen speziellen Code, den ich product.php in setzen
echo '<pre>';
print_r($ProductCategory);
exit;
oben plugin.php Datei i Code unten haben
use technobrave\productcategory\Models\ProductCategory as ProductCategory;
so indem ich das tue, versuche ich, alle Kategorien zu bekommen, die ich bereits erstellt habe und irgendwie versuche, es in meinem Dropdown zu zeigen.
Ich weiß, in OctoberCMS während Plugins Erstellen wir mit Beziehungen Logik (das heißt hasMany, hasOne usw.), aber jetzt wollen beschäftigen kann ich mit externen Plugins auf diese Weise erreichen. Ich möchte hinzufügen, dass diese Kategorien in der Methode getCategoryOptions()
ausgefüllt werden, und ich werde diese in meinem Dropdown zurückgeben.
Kann mir jemand sagen, ob es möglich ist, was ich will?
Danke