Yii Framework Forum: Obtener Valores - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Obtener Valores Rate Topic: -----

#1 User is offline   juan pablo 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 04-December 12

Posted 05 February 2013 - 11:39 AM

Buenos dias.

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

cantidad total: 15

Adiciono el modelo y el controller.

gracias

Attached File(s)


0

#2 User is offline   robregonm 

  • Expert Yii Developer
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 591
  • Joined: 30-July 09
  • Location:Colombia

Posted 05 February 2013 - 07:27 PM

Hola Juan Pablo,
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:
1. 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
B) 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.

2. 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'];



Saludos.
Ricardo Obregón

YiiFramework en Español - http://yiiframework.co/ - http://yiiframeworkenespanol.org/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx 1.4, MySQL(MariaDB & PerconaDB), PostgreSQL 9, Yii 2.0-dev.
Follow me: @robregonm & @obregonco & @1ServerCo.
1

#3 User is offline   xNicox 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 76
  • Joined: 19-October 10

Posted 07 February 2013 - 11:25 AM

Has probado de guardar un campo hiden con la cantidad "original" ?
en el controller antes de asignar atributos recuperas el valor original.

en $model->cantidad, segun tu definicion, vas a tener cuanto queres agregar o quitar
por ende :
con esta formula lo re-calculas:
$model->cantidad = $cant_original + $model->cantidad


es los mas rapido que se me ocurre.
tambien me gusto la propuesta de "Robregonm"


Saludos
Lic. Nicolas Machado
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users