تالار گفتمان nCIS.ir

نسخه‌ی کامل: ساخت یک اکشن مشترک برای سمت وب و وب سرویس
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.

a1552f

برای عملیات ریست کردن کلمه عبور بعد از اتمام عملیات در اکشن مورد نظر بسته به اینکه این عملیات سمت وب باشد یا وب سرویس خروجی با فرمت خاصی رو باید داشت ، وب سرویس ( Json) برای نمایش در نسخه آندروید به مشتری و در سمت وب render کردن یک صفحه و نمایش یک پیغام به مشتری ، چطوری یک اکشن رو بنویسم که عملیات ریست کردن کلمه عبور رو انجام بده و بسته به اینکه در وب سرویس یا سمت وب هست خروجی قابل قبول رو برگردونه؟
یه پارامتر خاص توسط اندروید بفرستین و توی سرور چک کنید اون پارامتر وجود داره یا نه. فرضاً با روش Post بفرستین و اینطرف با کد زیر بخونید:
if(!is_null(Yii::$app->request->post('mobile'))) {
    // generate response in JSON format
} else {
    // generate normal response
}

a1552f

از سمت اندروید به یک اکشن میره که از کلاس 

yiirestController
هست سمت وب یک اکشن از کلاس 
yiiwebcontroller
میخوای اکشنی بنویسم که بتونم توی این دو کنترلر به طور مثال در اکشن reset استفاده کنم ازشون، و هر اکشن نسبت به نوع کنترلرش خروجی خاص خودشو برگردونه.
اکشن ننویسید. یه متد بصورت یه کلاس مستقل طراحی کنید. بعنوان مثال یه کلاس توی پوشه components بسازین (پوشه رو هم بسازین) و این کد رو بنویسید:
namespace appcomponents;

use Yii;
use yiiwebNotFoundHttpException;
use appmodelsUsers;

class MyTools
{
    public static function resetPassword($userId, $oldPass, $newPass)
    {
        if(!$model = Users::findOne($userId)) {
            throw new NotFoundHttpException('User not found.');
        }
        if($model->validatePassword($oldPass)) {
            $model->password = $newPass;
            return $model->save();
        }
        return false;
    }
}

و از این کد به اینصورت استفاده کنید:
use appcomponentsMyTools;

MyTools::resetPassword(5, '123456', '654321');