Это старая версия документа!


Инвентаризация: model:fields

Описание атрибутов модели делаем в одной функции:

    public $parentAttr='parentService'; //имя атрибута в котором у нас объект-предок (родительское помещение/сервис/отдел и т.д.)
    public function attributeData() {
        return [
            ['model_id'] => [
                //позже транслируется в attributeLabels, используется в отображении атрибута в формах
                'label'=>'Модель ПК',  
                //позже транслируется в attributeHints, используется для пояснения атрибута в формах
                'hint'=>'Модель системного блока / ноутбука. ' 
                       .'Если нужная модель отсутствует в списке, то нужно сначала завести в ее в соотв. категории оборудования',  
                //позже транслируется в attributeIndexLabels, используется в отображении атрибута в списках
                'indexLabel'=>'Модель ПК',  
                //позже транслируется в attributeIndexHints, используется для пояснения атрибута в списках
                'indexHint'=>'Модели можно перечислить варианты через верт. черту "|"',  
                //поле наследуемое (если не задано в этом объекте, то значение берется из родителя)
                'is_inheritable'=>true,  
                //чем заполнить селектор в форме, если значение не введено
                'placeholder' => 'Модель ПК не выбрана',  
            ],
            'model'=>['alias'=>'model_id'], //значения параметров атрибута брать из model_id
        ]
    }
 
	/**
	 * @return array[] Ссылками на объекты каких классов являются атрибуты
	 * $linksSchema=[
	 * 		'services_ids'=>[
	 * 			Service::class,		//на какой класс ссылаемся
	 * 			'acls_ids',			//если там есть обратная ссылка, то в каком аттрибуте
	 * 		],
	 * 		'user_id'=>[
	 * 			Users::class,
	 * 			'loader'=>'user'	//как загрузчик этого объекта называется в мастер-классе
	 * 		],
	 * ];
	 */
	public $linksSchema=[
		'depends_ids' =>				[Services::class,'dependants_ids'],
		'comps_ids' =>					[Comps::class,'services_ids'],
		'techs_ids' =>					[Techs::class,'services_ids'],
		'maintenance_reqs_ids'=>		[MaintenanceReqs::class,'services_ids'],
		'maintenance_jobs_ids'=>		[MaintenanceJobs::class,'services_ids'],
		'support_ids' =>				[Users::class,'support_services_ids','loader'=>'support'],
		'infrastructure_support_ids' =>	[Users::class,'infrastructure_support_services_ids','loader'=>'infrastructureSupport'],
		'contracts_ids' => 				[Contracts::class,'services_ids'],
		'acls_ids' => 					[Acls::class,'services_id'],
 
		'responsible_id' =>				[Users::class,'services_ids'],
		'infrastructure_user_id' =>		[Users::class,'infrastructure_services_ids','loader'=>'infrastructureResponsible'],
		'providing_schedule_id' =>		[Schedules::class,'providing_services_ids'],
		'support_schedule_id' =>		[Schedules::class,'support_services_ids'],
		'segment_id' =>					[Segments::class,'services_ids'],
		'parent_id' =>					[Services::class,'children_ids','loader'=>'parentService'],
		'partners_id' =>				[Partners::class,'services_ids'],
		'places_id' =>					[Places::class,'services_ids'],
		'currency_id' =>				Currency::class,
    ];
 
    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
    	$labels=[];
    	foreach ($this->attributeData() as $key=>$data)
    		if (isset($data['label']))
    			$labels[$key]=$data['label'];
        return $labels;
    }
 
	/**
	 * @inheritdoc
	 */
	public function attributeHints()
	{
		$hints=[];
		foreach ($this->attributeData() as $key=>$data)
			if (isset($data['hint']))
				$hints[$key]=$data['hint'];
		return $hints;
	}
  • инвентаризация/dev/model/fields.1716626509.txt.gz
  • Последнее изменение: 2024/05/25 08:41
  • admin