|
@@ -7,11 +7,11 @@ use Dcat\Admin\Form\Field;
|
|
|
use Dcat\Admin\Support\Helper;
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
use Illuminate\Support\Arr;
|
|
|
-use Illuminate\Support\Str;
|
|
|
|
|
|
class Select extends Field
|
|
|
{
|
|
|
use CanCascadeFields;
|
|
|
+ use CanLoadFields;
|
|
|
|
|
|
protected $cascadeEvent = 'change';
|
|
|
|
|
@@ -84,60 +84,6 @@ class Select extends Field
|
|
|
return $this;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Load options for other select on change.
|
|
|
- *
|
|
|
- * @param string $field
|
|
|
- * @param string $sourceUrl
|
|
|
- * @param string $idField
|
|
|
- * @param string $textField
|
|
|
- *
|
|
|
- * @return $this
|
|
|
- */
|
|
|
- public function load($field, $sourceUrl, string $idField = 'id', string $textField = 'text')
|
|
|
- {
|
|
|
- if (Str::contains($field, '.')) {
|
|
|
- $field = $this->formatName($field);
|
|
|
- }
|
|
|
-
|
|
|
- $class = $this->normalizeElementClass($field);
|
|
|
-
|
|
|
- $url = admin_url($sourceUrl);
|
|
|
-
|
|
|
- return $this->addVariables(['load' => compact('url', 'class', 'idField', 'textField')]);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Load options for other selects on change.
|
|
|
- *
|
|
|
- * @param string $fields
|
|
|
- * @param string $sourceUrls
|
|
|
- * @param string $idField
|
|
|
- * @param string $textField
|
|
|
- *
|
|
|
- * @return $this
|
|
|
- */
|
|
|
- public function loads($fields = [], $sourceUrls = [], string $idField = 'id', string $textField = 'text')
|
|
|
- {
|
|
|
- $fieldsStr = implode('^', array_map(function ($field) {
|
|
|
- if (Str::contains($field, '.')) {
|
|
|
- return $this->normalizeElementClass($field).'_';
|
|
|
- }
|
|
|
-
|
|
|
- return $this->normalizeElementClass($field);
|
|
|
- }, (array) $fields));
|
|
|
- $urlsStr = implode('^', array_map(function ($url) {
|
|
|
- return admin_url($url);
|
|
|
- }, (array) $sourceUrls));
|
|
|
-
|
|
|
- return $this->addVariables(['loads' => [
|
|
|
- 'fields' => $fieldsStr,
|
|
|
- 'urls' => $urlsStr,
|
|
|
- 'idField' => $idField,
|
|
|
- 'textField' => $textField,
|
|
|
- ]]);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* Load options from current selected resource(s).
|
|
|
*
|