PDA

View Full Version : route در کدایگنایتر



A.ardalan far
جمعه 26 دی 1393, 11:54 صبح
سلام به تمام دوستان
این کد:



class Login extends CI_Controller {
/**
*LOGIN class for login public users
* Maps to the following URL
* http://example.com/login
**/
function __construct(){
parent::__construct();
$this->load->library(array('form_validation','captcha'));
$this->load->model('login_model');
}

// route /login.php
public function index($alarm = NULL,$null = NULL){
$datacaptcha= $this->captcha->craete();
$info['image'] = $datacaptcha['captchaimage'];
$this->session->set_userdata('captcha',$datacaptcha['captchacode']);
$info['alarm'] = $alarm;
$this->load->view('login_view',$info);
}
}

و در url


http://localhost/xxx/login/login/3d
http://localhost/xxx/login/index/3d

3d رو echo میکنه رو صفحه (تو ویو الارم رو echo میکنه)

برای راه جلوگیری از این که یوزر هرچی زد چاپ نکنه میشه این کارو تو route کرد که


$route['login/index/(:any)'] = "my404";
$route['login/login/(:any)'] = "my404";


--------------------
خوب راه دیگه نیست بشه یکم بهتر و با حجم کد کمتری این کارو کرد؟ اخه یعنی باید برای تمام کنترلرها ک ارگومان میگیرن تعریف کرد؟ منطقی نیست فکنم . کسی پیشنهادی داره واسش؟
بچه ها اگر لایبراری چیزی میشناسین که این کارو تمیز تر کنه بگین. کد رو کاستوم کنم.

https://github.com/PhiloNL/CodeIgniter-Route-Debugging
این چطوره؟

سوال بعدیم اینه ک چرا http://localhost/xxx/login/login این داره جواب میده ولی من فانکشنی به نام login ندارم . login یه کلاسه. برای کانستراکتش هست؟

plague
شنبه 27 دی 1393, 13:06 عصر
در مورد سوال دومت من تا حالا امتحان نکردم ولی فکر میکنم اگه فانکشن رو همنام با نام کنترلر/کلاس بزاری یا فراخانی کنی مثل اینه که index رو فراخانی کردی
یعنی login/index

د رمورد سوال اولت هم درست متوجه نشدم شما تابع رو با آرگومان نوشتی بعد میگید میخام آرگومانی ارسال نشه بهش ؟

A.ardalan far
یک شنبه 28 دی 1393, 12:26 عصر
در مورد سوال دومت من تا حالا امتحان نکردم ولی فکر میکنم اگه فانکشن رو همنام با نام کنترلر/کلاس بزاری یا فراخانی کنی مثل اینه که index رو فراخانی کردی
یعنی login/index

د رمورد سوال اولت هم درست متوجه نشدم شما تابع رو با آرگومان نوشتی بعد میگید میخام آرگومانی ارسال نشه بهش ؟

سوال دوم خلاصش اینه که
راه بهتری هست بجای استفاده از
$route['login/index/(:any)'] = "my404";
؟