Я создал два плагина (состояния а также предместья) с помощью строитель плагин и до сих пор он прекрасно работает.
Дело в том, в состояния плагин, я просто позволяю возможность добавлять имена состояний, а в плагине 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;
}
}
Как я могу сделать это дальше? Любая помощь или руководство будут высоко оценены и полезны.
Спасибо
Хорошо, ребята,
В конце концов я нашел решение. Вот что я сделал.
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');
}
}
И это работает.
Надеюсь, это поможет тем, кто придерживается той же проблемы / реализации.
Спасибо
Других решений пока нет …