2016-07-01 5 views
7

के माध्यम से रूटिंग मैं पहली बार राउटर (अल्टोउउटर) का उपयोग करने की कोशिश कर रहा हूं और किसी भी पेज को कॉल करने में असमर्थ हूं।Php AltoRouter

वेब फ़ोल्डर संरचना

enter image description here कोड

index.php

require 'lib/AltoRouter.php'; 

$router = new AltoRouter(); 
$router->setBasePath('/alto'); 
$router->map('GET|POST','/', 'home#index', 'home'); 
$router->map('GET|POST','/', 'display.php', 'display'); 
$router->map('GET','/plan/', 'plan.php', 'plan'); 
$router->map('GET','/users/', array('c' => 'UserController', 'a' => 'ListAction')); 
$router->map('GET','/users/[i:id]', 'users#show', 'users_show'); 
$router->map('POST','/users/[i:id]/[delete|update:action]', 'usersController#doAction', 'users_do'); 
// match current request 
$match = $router->match(); 

if($match && is_callable($match['target'])) { 
    call_user_func_array($match['target'], $match['params']); 
} else { 
    // no route was matched 
    header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found'); 
} 

मैं योजना फ़ोल्डर में एक फ़ाइल का नाम plan.php (प्रदर्शन की योजना) और हाइपरलिंक कि मैं कोशिश कर रहा है

<a href="<?php echo $router->generate('plan'); ?>">Plan <?php echo $router->generate('plan'); ?></a> 

whi सी काम नहीं करता है।

क्या आप मदद कर सकते हैं?

उत्तर

2

आप plan.php एक तर्क के रूप http://altorouter.com/usage/processing-requests.html

पर match कार्य करने के लिए

चेक उदाहरण पारित करके plan.php फोन नहीं कर सकते हैं

आप में map का उपयोग करना चाहिए plan.php की सामग्री का उपयोग करना चाहते हैं निम्नलिखित प्रारूप

$router->map('GET','/plan/', function() { 
    require __DIR__ . '/plan/plan.php'; 
} , 'plan'); 

फ़ाइलपरदोहरी जांच जोड़ने echo 'testing plan';

इसके अलावा, कि अपनी .htaccess फाइल

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . index.php [L] 

भी शामिल है, अगर आप आधार पथ $router->setBasePath('/alto'); के साथ अपने index.php फ़ाइलों alto निर्देशिका में रखा जाना चाहिए ताकि आपके url कि में होगा मामले http://example.com/alto/index.php

कार्य उदाहरण:

require 'lib/AltoRouter.php'; 

$router = new AltoRouter(); 
$router->setBasePath('/alto'); 

$router->map('GET','/plan/', function() { 
    require __DIR__ . '/plan/plan.php'; 
} , 'plan'); 

// match current request 
$match = $router->match(); 

if($match && is_callable($match['target'])) { 
    call_user_func_array($match['target'], $match['params']); 
} else { 
    // no route was matched 
    header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found'); 
} 

तो यह ठीक काम करेगा

<a href="<?php echo $router->generate('plan'); ?>">Plan <?php echo $router->generate('plan'); ?></a> 
+0

मुझे होम पेज काम मिल रहा है लेकिन plan.php को कॉल करने में असमर्थ हूं। होम पेज में Plan की योजना बनाने का एक लिंक है जो मैं Plan generate('plan'); ?> में बदल गया। –

+0

घर # इंडेक्स यह काम करता है क्योंकि अधिकतर आपके पास क्लास होम है जिसमें विधि इंडेक्स है। $ राउटर-> मानचित्र ('प्राप्त करें', '/ योजना /', फ़ंक्शन() { को __DIR__ की आवश्यकता होती है। '/plan/plan.php'; }, 'योजना'); जब मार्ग मिलान किया जाता है तो ऊपर दिए गए इस फ़ंक्शन में plan.php फ़ाइल शामिल है। वैकल्पिक आप विधि सूचकांक के साथ वर्ग 'योजना' बना सकते हैं और फिर आप होम पेज के लिए उसी तरह योजना # अनुक्रमणिका पास कर पाएंगे। –