Ich kann eine Ansicht, die sich in einem Unterordner in meinem CodeIgniter views
-Ordner mit einer direkten Verknüpfung befindet, nicht direkt laden. HierDer direkte Verweis auf eine Unterordneransicht gibt 404 zurück
ist die Ordnerstruktur:
my_project/
application/
views/
pages/
about.php
about/
organization.php
history.php
Ich brauche organization.php
und history.php
über einen Link für den Zugriff auf wie:
<div id="container">
<ul>
<li>
<a href='<?php echo base_url('about'); ?>'>About</a>
</li>
<li>
<a href='<?php echo base_url('about/organization'); ?>'>About/Organization</a>
</li>
<li>
<a href='<?php echo base_url('about/history'); ?>'>About/History</a>
</li>
</ul>
</div>
aber ich bekomme einen 404.
Mein htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /my_project/
# Removes index.php from ExpressionEngine URLs
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /my_project/$1$2 [R=301,NE,L]
# Directs all EE web requests through the site index file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /my_project/index.php/$1 [L]
</IfModule>
Hier
ist mein routes.php
die Pages::view(path/to/file)
auf meine Standard-View-Controller leitet:
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['pages/(:any)/(:any)'] = 'pages/view/$1/$2';
$route['(:any)'] = 'pages/view/$1';
Hier ist mein Controller:
<?php
class Pages extends CI_Controller
{
function __construct()
{
parent::__construct();
}
public function view($page = 'home')
{
if(!file_exists(APPPATH.'views/pages/'.$page.'.php'))
{
show_404();
}
$data['title'] = strtoupper(str_replace(["-", "–"], ' ', $page));
$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}
}
HINWEIS, wenn ich direkt
verwenden$this->load->view('pages/views/about/organization');
ist es in Ordnung. Gleiches mit dem Drucken:
file_exists(APPPATH.'views/pages/about/organization.php');
Ich weiß nicht, was das vermasselt haben könnte.
Muss ich einen benutzerdefinierten Controller nur für diese Unterordner erstellen? Das ist die einzige Lösung, an die ich gerade denken kann.
HINWEIS ich auch in diesem Unterordner (des gesamten Projekts ist eigentlich) Berechtigungen 777
und die direkte Verbindung nach wie vor gesetzt hat nicht funktioniert.
HINWEIS Meine einzige Lösung ist jetzt getrennte Controller für jeden dieser Unterordner nur zu betrachten, sie zu machen! Ist das wirklich unmöglich mit nur einem Controller?
Wie das URL-Muster my_app/controller/method
ist streng und my_app/folder/view
ist nicht erlaubt, es sei denn folder
und view
zu einem controller
und method
entspricht jeweils?
SOLUTION
Zeeshandidthat!
Shantay, du bleibst! Thank you.
Sie sind richtig, ich wollte eine generische Methode, um alle meine statischen Seitenaufrufe zu erfassen. Wir können dieses Problem jetzt schließen (ich werde das Kopfgeld in 20 Stunden vergeben).
You were the only one who understood the assignment.
Jungs Ich möchte nicht mehrere Controller für jeden dieser Unterordner erstellen bitte helfen, ich weiß in meinem Herzen ist dies mit diesem einen Controller vielleicht mein 'htaccess' möglich ??? –
Ihre routes.php-Datei ist nicht gut geschrieben. Lesen Sie [this] (https://codeigniter.com/userguide3/general/routing.html) erneut. ** Die reservierten Routen müssen vor beliebigen Platzhalter- oder regulären Ausdrucksrouten stehen. ** aber auch ** Routen werden in der Reihenfolge ausgeführt, in der sie definiert sind. Höhere Routen haben immer Vorrang vor niedrigeren.** Das heißt, wenn Sie $ route ['(: any)'] = 'something/here' haben, muss es als letzte Zeile in der Datei kommen. – Tpojka
@Tpojka: Ich folgte Ihrem Rat und noch keine Änderungen. [Ich bekomme eine 404 für die Unterordneransicht] (http://stackoverflow.com/questions/39360697/link-to-view-inside-subfolder-does-not-display-correctly) –