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