Плагин OctoberCMS Builder с состоянием и пригородом

Я создал два плагина (состояния а также предместья) с помощью строитель плагин и до сих пор он прекрасно работает.

Дело в том, в состояния плагин, я просто позволяю возможность добавлять имена состояний, а в плагине Suburbs я разрешаю пользователям выберите государство сначала, а затем введите название пригорода. На данный момент все работает нормально в этих двух плагинах.

Теперь дело в том, что у меня есть третий плагин, который называется свойства в котором у меня есть оба эти 2 выпадающих государственный а также предместья но на данный момент все штаты и все пригороды показывают. Но я хочу, чтобы пользователи сначала выбирали государственный а затем на основе выбора штата он должен все свои пригороды к моему другому предместья падать.

Я пытался использовать зависит от который предоставляет плагин Builder, но я просто не в состоянии понять процесс его достижения шаг за шагом на основе текущего сценария, который у меня есть. Ниже приведен код, который я сделал и попробовал до сих пор.

плагины \ technobrave \ свойства \ модели \ Property.php

<?php namespace Technobrave\Properties\Models;

use Model;
use technobrave\states\Models\State as State;
use technobrave\suburbs\Models\Suburb as Suburb;

public function getStateIdOptions()
{
// getting all states

$get_all_states = State::all();$fields[''] = 'Select any State';
foreach ($get_all_states as $current_state) {
$fields[$current_state->attributes['id']] = $current_state->attributes['state_name'];

}
ksort($fields);
return $fields;
}public function getSuburbIdOptions($stateId)
{
// getting all suburbs

$get_all_suburbs = Suburb::all();

$fields[''] = 'Select any Suburb';
foreach ($get_all_suburbs as $current_suburb) {
$fields[$current_suburb->attributes['id']] = $current_suburb->attributes['suburb'];

}ksort($fields);
return $fields;
}
}

Как я могу сделать это дальше? Любая помощь или руководство будут высоко оценены и полезны.

Спасибо

0

Решение

Хорошо, ребята,

В конце концов я нашел решение. Вот что я сделал.

fields.yaml Файл: technobrave \ свойства \ модели \ Свойство \ fields.yaml

        state_id:
label: 'State:'
span: auto
required: 1
type: dropdown
tab: 'Address Information'
suburb_id:
label: 'Suburb:'
span: auto
required: 1
type: dropdown
tab: 'Address Information'
placeholder: 'Select any Suburb'
dependsOn: state_id

Как вы можете видеть выше,

В suburb_id Я добавил, ниже двух строк кода.

placeholder: 'Select any Suburb'
dependsOn: state_id

Модель недвижимости Файл: technobrave \ свойства \ модели \ Property.php

use Model;
use technobrave\states\Models\State as State;
use technobrave\suburbs\Models\Suburb as Suburb;

public function getStateIdOptions()
{
// getting all states

$get_all_states = State::all();$fields[''] = 'Select any State';
foreach ($get_all_states as $current_state) {
$fields[$current_state->attributes['id']] = $current_state->attributes['state_name'];

}
ksort($fields);
return $fields;
}public function getSuburbIdOptions()
{
return Suburb::getNameList($this->state_id);
}

Здесь выше, я только что обновил getSuburbIdOptions метод с кодом ниже и удалил мой старый код.

return Suburb::getNameList($this->state_id);

Затем я пошел в свой предместья плагин.

Модель пригорода Файл: technobrave \ пригороды \ модели \ Suburb.php

И в этом файле модели, я убедился, чтобы использовать belongsTo и добавил getNameList метод как ниже.

 <?php namespace Technobrave\Suburbs\Models;

use Model;
use technobrave\states\Models\State as State;
/**
* Model
*/
class Suburb extends Model
{

/**
* @var string The database table used by the model.
*/
public $table = 'youtable_here_';public $belongsTo = ['State' => [
'technobrave\states\Models\State',
'key' => 'state'
],

];/**
* @var array Cache for nameList() method
*/
protected static $nameList = [];

public static function getNameList($stateId)
{
if (isset(self::$nameList[$stateId])) {
return self::$nameList[$stateId];
}

return self::$nameList[$stateId] = self::wherestate($stateId)->lists('suburb', 'id');
}

}

И это работает.

Надеюсь, это поможет тем, кто придерживается той же проблемы / реализации.

Спасибо

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]