как мога да изпращам стойност на променлива чрез връзки за пагиниране?

РЕШЕНО Опитвах се да създам пагинация на началната страница.

моят контролер по подразбиране:

$route['default_controller'] ="home";

проблем 1: за пагинация, ако пиша-

$config['base_url'] = base_url() . 'home/index'; // index function
$config['uri_segment'] = 3;
$config['per_page'] = 10;
$limit = array($config['per_page'] => $this->uri->segment(3));

след това работи, но показва „localhost/baseurl/home/index/10“ в адресната лента на браузъра. Искам да покажа само „localhost/baseurl/10“ (докато „localhost/baseurl/“ е началната ми страница и искам пагинация на там).така че написах

$config['base_url'] = base_url(); // index function
$config['uri_segment'] = 1;
$config['per_page'] = 10;
$limitt = array($config['per_page'] => $this->uri->segment(1));

но това не работи. как мога да направя това ?

проблем 2:

как мога да изпратя променлива стойност чрез връзка за страниране като localhost/baseurl/home/index?search=y/10

Написах:

$config['base_url'] = base_url() . 'home/index?search=y';

но това не работи. то получава search=y/10. не само y и пагинацията не намира 10 на $this->uri->segment(3))

така че какъв е правилният начин да направите това?

Редактиране:

моят htaccess код е:-

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./mysite/index.php [L]

</IfModule>

този код показва адреса на моя сайт като „localhost/mysite/“. но ако задам основния url на пагинацията като

$config['base_url'] = base_url();
$config['uri_segment'] = 1;
$config['per_page'] = 10;
$limitt = array($config['per_page'] => $this->uri->segment(1));

след това числото се показва на връзката за пагиниране като „localhost/mysite/10“, но стойността „10“ не е получена от скрипта. ако пиша -

$config['base_url'] = base_url().'home/index';  // 'index' is the function in 'home' class
$config['uri_segment'] = 3;
$config['per_page'] = 10;
$limitt = array($config['per_page'] => $this->uri->segment(3));

тогава работи, но адресният ред на браузъра става „localhost/mysite/home/index/10“, което не ми харесва. какъв е начинът за решаване на първия проблем?


person user1844626    schedule 21.08.2013    source източник
comment
За първия проблем ще трябва да дефинирате правило за пренаписване във вашия .htaccess файл, за втория проблем активирайте опцията 'page_query_string', така че не е необходимо да използвате uri-›сегменти, вместо това ще го изпрати като променлива _GET.   -  person ahmad    schedule 21.08.2013
comment
вторият проблем беше решен. декларира 'page_query_string' като TRUE. но първият проблем все още е там. кодът на моя файл htaccess е в моята част за редактиране. как трябва да променя това, за да реша първия проблем?   -  person user1844626    schedule 22.08.2013
comment
хм.. първо опитайте нещо подобно във вашите routes.php: $route['(:num)'] = home/index/$1;   -  person ahmad    schedule 24.08.2013
comment
бихте ли обяснили повече? в моя routes.php има '$route['default_controller'] =home/;' Опитах '$route['default_controller'] =home/index/;' но това не работи за uri-›segment(1). изглежда uri-›segment(1) [като 'localhost/mysite/10'] не е намерен от сървъра. винаги показва „страницата не е намерена“.   -  person user1844626    schedule 24.08.2013
comment
Знам, че сте задали своя контролер по подразбиране, но тъй като се опитвате да използвате страниране директно, без да указвате контролер/метод/отместване и търсите само /отместване в домашния си URL адрес, тогава ще трябва да дефинирате маршрута Дадох ви, което ще съвпадне с произволно число в началото на URL адреса и ще го преместите към съответния контролер (контролера по подразбиране).   -  person ahmad    schedule 25.08.2013
comment
това проработи, благодаря много..   -  person user1844626    schedule 26.08.2013


Отговори (1)


За първия проблем ще трябва да дефинирате rewrite rule както в първия коментар.
За втория проблем направете така,

if($this->uri->segment(3)){
    $keyword = $this->uri->segment(3);
}
else if($this->input->get('search')){
    $keyword = $this->input->get('search');
}

$config['base_url']     = base_url().'home/index/'.$keyword.'/page/';
$config["uri_segment"]  = 5;
person Nil'z    schedule 22.08.2013
comment
вторият ми проблем беше решен. Проследих коментара на Ахмад. но първият проблем все още трябва да бъде разрешен. вижте моя htaccess код там. който премахва „index.php“ от адреса на сайта в адресната лента на браузъра. така че как трябва да променя това, за да реша първия проблем? какво ново да пиша там - person user1844626; 22.08.2013