123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- namespace Dcat\Admin\Form\Field;
- use Illuminate\Support\Str;
- trait CanLoadFields
- {
- /**
- * 联动加载.
- *
- * @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')
- {
- return $this->loads($field, $sourceUrl, $idField, $textField);
- }
- /**
- * 联动加载多个字段.
- *
- * @param array|string $fields
- * @param array|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,
- ]]);
- }
- }
|