Trabajo con formularios de configuración
Uso de $config en el contexto del formulario
Puede usar formularios de configuración para entender cómo $config puede obtener datos ingresados por el usuario y modificar los datos en el archivo {module}.settings.yml. Aquí está el código para declarar el objeto $config en un formulario, que puede encontrar en el archivo PHP del formulario de configuración.
La clase ConfigFactory de Drupal Core es la forma de leer y escribir datos de configuración, y se usa para crear una instancia del objeto Config basada en el contenido del archivo de configuración especificado. El nuevo objeto Config puede entonces ser usado para realizar operaciones CRUD sobre esos datos.
Ejemplo de definición de formulario (ubicado en example/src/Form/exampleSettingsForm.php):
namespace Drupal\example\Form; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; /** * Configura los ajustes de example para este sitio. */ class ExampleSettingsForm extends ConfigFormBase { /** * Configuración de ajustes. * * @var string */ const SETTINGS = 'example.settings'; /** * {@inheritdoc} */ public function getFormId() { return 'example_admin_settings'; } /** * {@inheritdoc} */ protected function getEditableConfigNames() { return [ static::SETTINGS, ]; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config(static::SETTINGS); $form['example_thing'] = [ '#type' => 'textfield', '#title' => $this->t('Things'), '#default_value' => $config->get('example_thing'), ]; $form['other_things'] = [ '#type' => 'textfield', '#title' => $this->t('Other things'), '#default_value' => $config->get('other_things'), ]; return parent::buildForm($form, $form_state); } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { // Recupera la configuración. $this->configFactory->getEditable(static::SETTINGS) // Establece la configuración enviada. ->set('example_thing', $form_state->getValue('example_thing')) // Puedes establecer múltiples configuraciones a la vez haciendo // múltiples llamadas a set(). ->set('other_things', $form_state->getValue('other_things')) ->save(); parent::submitForm($form, $form_state); } }
Archivo de rutas (example.routing.yml):
example.settings: path: '/admin/config/example/settings' defaults: _form: '\Drupal\example\Form\ExampleSettingsForm' _title: 'example' requirements: _permission: 'administer site configuration'
Usando el objeto Config, puede simplificar sus datos recopilados desde el formulario. Con el código anterior en el archivo del formulario de configuración, podrá almacenar los datos del formulario en {module}.settings.yml.
Cualquier clase que extienda ConfigFormBase debe implementar el método getEditableConfigNames y devolver un arreglo de nombres de campos de configuración que editará.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.