سلام زمانی که با متد put یا patch فرم ارسال میشه رو توضیح ندادین پارامترها ارسالی رو هندل نکردیم در حال حاضر میزته مسیر یافت نشد.
سلام و احترام
فرمها توی html فقط میتونن post یا get باشن و برای ارسال به صورت متدهای دیگه مثل put باید یه تگ hidden داخل فرم بزاریم تا سمت روتر بررسیش کنیم، یه همچین چیزی
حالا این _method رو داخل آرایه super global POST داریم و میتونیم جداگانه داخل کلاس request هم ذخیرش کنیم تا بتونیم چک کنیم ببینم اگه روت ما post بود میایم بررسی کنیم ببینیم _method که تعرفی کردیم با method داخل route همخونی داره یا ن
اگه دقت کرده باشید اول متد construct تغریف کرد متغیر form_method رو حالا ما همینو داریم و میتونیم داخل کلاس router متد findCurrentRoute هم بررسیش کنیم
داخل متد findCurrentRoute هم باید یه شرط بزارید ببینید form_method خالی نباشه و اگه خالی نبود مقدارش با با متد روت مقایسه کنید تا ببینید تطابق داره یا ن
امیر صالحی۱۶ تیر ۱۴۰۰، ۱۰:۵۳
سلام خواستم بگم مشکل رو حل کردم فقط شما فرمودین داخل findCurrentRoute باید چک بکنیم که ای ساعتها منو به اشتباه انداخت و در واقع متوجه نمیشدم بعد با اصلاح method در کلاس request و چک کردم مقدار دریافتی در پارامتر method_ مشکل حل شد.
class Request
{
private $form_method;
public function __construct()
{
$this->form_method = isset($_REQUEST['_method']) ? $_REQUEST['_method'] : '';
}
public function method()
{
if ($this->method == 'post' && !empty($this->form_method)) {
$this->method = $this->form_method;
}
return $this->method;
}
}
Mehrzad Tajkarimi۱۸ تیر ۱۴۰۰، ۱۴:۳۷
سلام و احترام
این متدها توی همه ی روترها وجود داره و دلیلش هم اینکه باید متوجه بشیم روتی که تعریف کردیم دقیقا میخواد چی کارکنه، برای مثال اگه قراره چیزی آپدیت بشه حتما باید براش حتما verb که همون (post - put - delete - get و.) هستش رو قرار بدیم تا داخل کد هم قابل کنترل باشه و درخواستی که از سمت کاربر میاد رو بتونیم کنترل کنیم
میتونیم به این شکل چک کنیم ببینیم اصلا درخواستی که اومده برای مثال delete بوده یا ن
$_SERVER['REQUEST_METHOD'] === 'DELETE'
فقط یه موردی، اگه به پاسخی نمره منفی میدید لطف کنید دلیلشو هم بگید تا کیفیت پاسخ گوییها رو بالا ببریم، ممنون
امیر صالحی۱۹ تیر ۱۴۰۰، ۱۷:۱۸
سلام خسته نباشید چیزی من از پاسخ شما برداشت کردم مشکل من رو نتونست حل بکنه خیلی تلاش کردم کلی وقت گذاشتم که دستوری که شما دادین استفاده کنم ولی به نتیجه نرسیدم ببینید فرمایش شما تا اونجا نتیجه داشت که مقدار hidden در واقع داخل request در یافت میکردیم ولی بعد شما فرمودین داخل روت باید بهش دسترسی داشت ولی برای استقاده از مقادیر put delete باید قبل از روتر این اقدام صورت بگیره تا مقدار روت شامل آرایههای دریافتی از request باشد حتما شما خیلی خیلی تحربه بیشتری از من دارید من متوجه هستم شما فقط مسیر رو به ما قرار هست در پاسختون نشون بدهید من هم موافق این داستان هستم ولی مسیری باشه که شما خودتون پیاده کرده باشید و نتیحه رو دیده باشید هیج قصد و غرضی در کار نیست من هرجا نتیجه گرفتم تیک مثبت رو زدم هرجایی پاسخ شما بهم کمک نکرد اعلام کردم در بالا هم دلایلم در پاسخ شما دلیل به نتیجه نرسیدنم رو هم عرض کردم خدمتتون