PDA

View Full Version : طراحی سبد خرید



engmmrj
چهارشنبه 28 آبان 1393, 10:28 صبح
کلاس session فریمورک خیلی ضعیفه نمیشه بهش array داد برای طراحی سبد خرید .
الان من اکشن رو اینجوری نوشتم آیا راهی دیگه براش وجود داره ؟

public function actionAdd($id)
{


$ref = parse_url(Yii::app()->request->urlReferrer);

if(!isset($ref['host']) || 'http://'.$ref['host'] != Yii::app()->request->hostInfo){
echo 1;
throw new CHttpException(502, 'Bad Getway!');
Yii::app()->end();
}
$session=new CHttpSession;
$session->open();
$basket = $session->get('basket.'.$id)+1;
$session->add('basket.'.$id, $basket);
$session->get('basket.'.$id);

$this->redirect(Yii::app()->request->urlReferrer);

}

MMSHFE
چهارشنبه 28 آبان 1393, 16:18 عصر
بهترین راه برای ذخیره آرایه توی سشن استفاده از serialize و unserialize یا json_encode و json_decode هست. البته میتونید برای کار با آرایه ها از Yii::app()->user->setState و Yii::app()->user->getState هم استفاده کنید.

engmmrj
چهارشنبه 28 آبان 1393, 21:19 عصر
بهترین راه برای ذخیره آرایه توی سشن استفاده از serialize و unserialize یا json_encode و json_decode هست. البته میتونید برای کار با آرایه ها از Yii::app()->user->setState و Yii::app()->user->getState هم استفاده کنید.
میشه نمونه کد سبد خرید سایت فروش پکیج رو بزارید؟

afshin9032
پنج شنبه 29 آبان 1393, 09:15 صبح
کد زیر تست شده مشکلی نداشت :



$session=new CHttpSession;
$session->open();
$session['array1']=array(1,2,3,4,5,6,7,8,9);
$session['array2']=array('a'=>'value1','b'=>'value2','c'=>'value3');
var_dump($session['array1']);
echo '---------------------------------';
var_dump($session['array2']);

engmmrj
پنج شنبه 29 آبان 1393, 12:53 عصر
با کمک آقای شهرکی به این صورت سبد خرید رو پیاده کردم.

public function actionAdd($id)
{
if(!Product::model()->exists('id=:id',array(':id' => $id))){
throw new CHttpException(404, 'Page Nout Found!');
Yii::app()->end();
}

$session=new CHttpSession;
$session->open();

$basket = unserialize ($session['basket']);

if(!is_array($basket))
$basket = array();

if(!in_array($id, array_keys($basket)))
$basket[$id] = 1;
else
$basket[$id]++;

$session['basket'] = serialize($basket);
$this->redirect(Yii::app()->request->urlReferrer);

}

MMSHFE
پنج شنبه 29 آبان 1393, 13:14 عصر
اینطوری هم میشه:

public function actionAdd($id)
{
if(!Product::model()->exists('id=:id',array(':id'=>$id))) {
throw new CHttpException(404, 'Product not found!');
}
$basket = array();
if(!Yii::app()->user->hasState('basket')) {
Yii::app()->user->setState('basket', serialize($basket));
}
else {
$basket = unserialize(Yii::app()->user->getState('basket'));
}
if(!in_array($id, array_keys($basket))) {
$basket[$id] = 1;
}
else {
$basket[$id]++;
}
Yii::app()->user->setState('basket', serialize($basket));
$this->redirect(Yii::app()->request->urlReferrer);
}

engmmrj
جمعه 30 آبان 1393, 17:33 عصر
این مشکل در Yii 2 بر طرف شده، آقای شهرکی میشه pdf yii2 رو بذارید ماهم دانلود کنیم ؟

MMSHFE
شنبه 01 آذر 1393, 09:17 صبح
PDF مربوط به Yii2 بصورت آزاد منتشر نشده و نسخه ای که تهیه کردم، خریداری شده و بعلت رعایت کپی رایت، نمیتونم منتشرش کنم.