2017-01-23 3 views
0

Ok, Leute, das ist der Fall ... Ich arbeite in einem alten Projekt mit CodeIgniter v2 (derzeit ist alles in localhost). Für neue Features habe ich einen Ordner v1 innerhalb des api OrdnerVerwenden Sie die Funktion in einem Controller in einem Ordner, der in Unterordner definiert ist Controller

Die Struktur des Projekts genannt:

Controller

api

v1

visit.php

orders.php

controller1.php

controller2.php

Das Problem ist, dass ich nicht zugreifen kann zum visit.php Controller

zu Testzwecken habe ich die visit Controller im api Ordner einen Zugriff es dieses Whit:

localhost/projectname/index.php/api/visit/visits 

visits ist die Funktion im visit Controller

Auf diese Weise funktioniert alles !! aber, wenn ich den Besuch-Controller in den Ordner v1 setze, bekomme ich einen Fehler 404 Seite nicht gefunden.

localhost/projectname/index.php/api/v1/visit/visits 

Extra-

Eine andere denken, die im Auge behalten ist. Dieses Projekt ist eine Bibliothek mit dem REST-API so im visit Controller tho Funktionen

public function visits_get(){ 
    // return an arrays of visits 
} 

public function visits_post(){ 
    // to add a new visit in a bd 
} 

So wird die Funktion ist abhängig von der Anforderung Methode namens

ich gelesen habe und ich fand, dass Ich muss die route.php konfigurieren, eigentlich habe ich es aber ohne Erfolg gemacht.

Danke und ich hoffe du verstehst was ich verlange!

ROUTE. php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

$route['default_controller'] = "welcome"; 
$route['404_override'] = ''; 

Das ist alles, was der route.php in ihm hat ._.

+0

freundlicherweise teilen Sie Ihre Route Datei –

+0

@UsmanAkram ist fertig :) – Robert

+0

"localhost/projectname/index.php/api/v1/visit/visits_get" Haben Sie es versucht? –

Antwort

0

Nach meinem Wissen müssen alle Controller, die außerhalb der Namenskonvention application/controllers/controller_name.php liegen, explizit in der Datei routes.php definiert werden, andernfalls wird CI nicht in Unterordner schauen. Es ist nicht viel von einem Problem, eigentlich, fügen Sie so etwas für Ihre Controller:

//You'll need to do this for all of your API controllers, unfortunately 
$route['api/v1/(:any)'] = 'api/v1/$1'; 
//If you have controllers taking arguments, eg. /api/v1/stuff/1 
$route['api/v1/(:any)/(:any)'] = 'api/v1/$1/$2'; 

//Catch-all route for 404's, recommended 
$route['api/(:any)'] = 'api/v1/error_api'; 

einen Blick auf die für weitere Informationen routing docs for CodeIgniter 2 haben.

+0

Eigentlich ja, ich habe die CI-Dokumente gelesen. Ich habe in einer Stackoverflow-Antwort gelesen, dass CI 3 leves Ordner nicht erlaubt. Ist das wahr? – Robert

+0

Ehrlich gesagt ist mir eine solche Einschränkung nicht bekannt. Unsere eigene Anwendung verwendet mehr als 3, aber mit einer anderen Struktur, da wir verschiedene Subsites innerhalb derselben Anwendung verwenden (zB 'application/SUBSITE/controllers/api/controller.php') und es funktioniert (natürlich erforderte die Subsite-Funktion ein bisschen der Arbeit). – SolarBear

Verwandte Themen