سلام
برای روترهای دینامیک ممکنه نیاز داشته باشیم برای ا ادرس یک صفحه از کاراتر فارسی استفاده کنیم برای این که نیاز دایم که اون ادرس رو برای مثال "7learn.com/پست-اول" رو ان کد کنیم
سوالم اینه که پارا متر فارسی رو در دیتا بیس به صورت انکد شده ذخیره کنیم یا uri دریافتی از طریق مرورگر رو دی کد کنیم
چون اگه این کار رو انجام ندیم روتر برای کاراکترهای فارسی کار نمیکنه
خودم به شکل زیر کار کردم مقدار uriها و method هارو از دیتا بیس میگیرم برای مثال "/پست-اول"
در فایل web.php
use App\\Core\\Routing\\Route;
Route::get('/','HomeController@index');
foreach (getPostsRoute() as $post){
Route::get('/'.$post->slug,'singleController@'.$post->type);
}
درفایل Request.php در این فایل مقدار $_SERVER['REQUEST_URI'] رو دیکد کردم
که مقدار " /%D9%BE%D8%B3%D8%AA-%D8%A7%D9%88%D9%84 " رو که از مرورگر هست به "پست-اول" تبدیل میشه
class Request
{
private $params;
private $method;
private $agent;
private $ip;
private $uri;
public function __construct()
{
$this->params = $_REQUEST; #PARAMS
$this->agent = $_SERVER['HTTP_USER_AGENT'];
$this->method = strtolower($_SERVER['REQUEST_METHOD']);
$this->ip = $_SERVER['REMOTE_ADDR'];
$this->uri = urldecode(strtok($_SERVER['REQUEST_URI'],'?'));
}
public function params()
{
return $this->params;
}
public function agent()
{
return $this->agent;
}
public function method()
{
return $this->method;
}
public function ip()
{
return $this->ip;
}
public function uri()
{
return $this->uri;
}
}
اگر روش بهتری هست لطفا بگید
با تشکر