Creación y Gestión de Libros en Aplicaciones Web

Clase 28 de 35Curso de Desarrollo Web con PHP y Yii2

Resumen

¿Cómo crear un controlador y acción en una aplicación web?

Crear un controlador y una acción es fundamental en el desarrollo de aplicaciones web, especialmente para implementar la lógica de negocio requerida. Primero, se inicia definiendo el controlador donde se declarará una nueva función pública, como actionNew. Dentro de esta acción se utilizará la lógica de negocio para la creación de un libro.

Código de ejemplo

public function actionNew() {
    $book = new Book();
    if ($book->load(\G\App::request()->post()) && $book->validate()) {
        if ($book->save()) {
            \G\App::session()->setFlash('success', 'Libro creado');
            return $this->redirect(['books']);
        }
    }
    return $this->render('form', ['book' => $book]);
}

En este proceso:

  1. Carga de datos: Se obtienen los datos a través de una petición POST.
  2. Validación: Se verifica que los datos cumplan con los requisitos definidos.
  3. Guardado: Si todo es correcto, los datos se guardan en la base de datos.
  4. Redirección: Después, se redirige al usuario a la lista de libros, mostrando un mensaje de éxito.

¿Por qué usar una plantilla de formulario (form.tpl)?

Usar una plantilla de formulario, como form.tpl, es una práctica recomendada porque permite reutilizar el mismo formulario tanto para crear como para editar registros. Esto ayuda a mantener un código más limpio y estructurado.

Implementación del formulario

use \SGWidgets\ActiveForm;

$form = ActiveForm::begin(['id' => 'book-form']);
echo $form->field($book, 'title')->textInput();
ActiveForm::end();

En esta sección, se utiliza una clase de formulario activa que permite generar campos y gestionar la entrada del usuario de manera sencilla y eficiente.

¿Cómo gestionar el acceso solo para usuarios registrados?

Es crucial establecer restricciones de acceso para ciertas acciones, como la creación de un libro, evitando que usuarios no autenticados accedan a esta funcionalidad.

Código de ejemplo

if (\G\App::user()->isGuest()) {
    return $this->redirect(['site/login']);
}

El código anterior redirige a los usuarios a la página de inicio de sesión si intentan acceder al formulario sin estar autenticados.

Navegación y autenticación

El sistema contempla una opción en la página de inicio donde los usuarios pueden comenzar a crear un libro, pero requerirá autenticación previa para acceder al formulario.

¿Cómo se configuran las etiquetas y validaciones del modelo?

Configurar etiquetas y reglas de validación ayuda a que los datos sean coherentes y estén preparados para su almacenamiento.

Ejemplo de etiquetas y reglas de validación

public function attributeLabels() {
    return [
        'title' => 'Título',
    ];
}

public function rules() {
    return [
        [['title', 'author_id'], 'required'],
        ['author_id', 'integer'],
    ];
}

Las etiquetas permiten presentar los nombres de los campos de manera amigable para los usuarios, mientras que las reglas de validación aseguran que los datos introducidos cumplen con los criterios establecidos, como requerimientos de tipo de dato.

¿Cómo crear un drop-down list de autores?

Un drop-down list facilita la selección de un autor ya existente al crear un libro, mejorando la usabilidad del formulario.

Generar una lista de autores

Primero, se define una función estática en el modelo Author para obtener los autores en el formato deseado para el drop-down list.

public static function getAuthorList() {
    $authors = self::find()->orderBy('name')->all();
    return ArrayHelper::map($authors, 'id', 'name');
}

Luego, se utiliza esta función para poblar la lista desplegable en el formulario de creación de libros.

Código de uso en formularios

echo $form->field($book, 'author_id')->dropDownList(Author::getAuthorList());

Este fragmento de código asegura que el drop-down list esté poblado con autores existentes y ordenados alfabéticamente.

Siempre es importante recordar que los usuarios deben tener una experiencia intuitiva y segura al manejar el sistema. Estos ejemplos fomentan la creación de aplicaciones eficientes y de fácil manejo. ¡Sigue aprendiendo y mejorando tus habilidades!