Estoy comenzando a practicar sobre el framework Yii y tengo una duda y es la siguiente:
tengo una tabla llamada inventario con sus propiedades (referencia, idarticulos, cantidad, stock_min, stock_max y precio). yo realice en Gii genere el modelo de la tabla de inventario y en el crud me genero el controller y todo lo demás. Quisiera saber como puedo modificar el valor de la cantidad del articulo cuando yo le agregue o quite otras cantidades de ese atriculo.
por ejemplo:
referencia: 01 (que es zapato tenis Adidas)
cantidad: 10 (exitencia anterior)
cantidad agregada o quitar: 5 (ingreso 5 pares) traida de un textfield del form
No estoy muy seguro de tener claro lo que desea, pero aquí va el código genérico requerido:
Hay dos posibilidades, una limpia y una no tanto, pero más sencilla:
La forma limpia (en el modelo)
a) Agregar al modelo un campo que podría llamarse "cantidad_agregada" o algo similar, para que el modelo lo reconozca como un campo que puede existir en el formulario
Adicionar el campo a las “rules” como “safe”.
c) Agregar la función beforeSave() al modelo así:
public function beforeSave(){
if($this->getIsNewRecord()){
$this->cantidad = $this->cantidad + $this->cantidad_agregada; // Funciona con suma y resta
}
return parent::beforeSave(); // Importantísimo incluir esta línea
}
Nota: El campo en la vista se agrega como un campo estándar.
No tan limpia (en el controller)
a) Asumiendo que el textfield que agrega se llama "agregada", entonces sería algo similar a lo realizado en el modelo, pero en lugar de ir en el modelo, entonces se incluye en el controller (algo más al estilo clásico de PHP), en la función actionUpdate() que podría ser algo como:
// Después de $model->attributes = $_POST['Inventario'];
$model->cantidad = $this->cantidad + $_POST['agregada'];