Oto ramy używam:Routing problemy z CodeIgniter i backbone.js
- CodeIgniter
- CodeIgniter REST API
- Require.js
- backbone.js
Uruchamianie aplikacji:
- Plik htaccess przekierowuje wszystko przez plik Codeigniter index.php.
- Istnieje domyślna konfiguracja trasy w Kodzie sygnalizacyjnym, aby wywołać kontroler "Start".
- Kontroler uruchamiania wywołuje widok początkowy (jedyny widok w Codeigniter).
- Widok początkowy zawiera szablon dla całej witryny i wywołuje żądanie uruchomienia Require.js
- Uruchomienie Require.js Szkielet i aplikacja działają zgodnie z oczekiwaniami.
Problem: Routing innym Szkieletowymi Wyświetleń:
- Teraz chcę trasa przez kręgosłup innych "poglądów" kręgosłupa.
- Problem polega na tym, że próbuję podać łącze takie jak "localhost/otherPage" w pliku HtF, który uruchamia plik htaccess, a Codeigniter próbuje znaleźć tego kontrolera, a otrzymam 404 wygenerowany przez Codeigniter.
- Próbowałem wymusić trasę w Backbone zamiast HREF za pomocą `app.navigate (" otherPage ", {trigger: true});`, ale pojawia się ten sam błąd 404 generowany przez Codeigniter.
jakim kierunku należy zabrać ze sobą:
- chciałbym nadal korzystać z CodeIgniter do jej spokojny API, modele i kilka specjalnych funkcji walidacji.
- Chcę również użyć kręgosłupa i wymagania z przodu.
- Czy mogę zmienić przekierowanie htacess do pliku index.html, który uruchamia Require and Backbone. Czy kontrolery API RESTFUL programu Codeigniter nadal będą poprawnie uruchamiać, jeśli użyję tego podejścia?
- Czy mogę utworzyć widok w Codeigniter dla każdej strony i czy każda strona zaczyna się Wymagać + Kręgosłup nowego dla każdego widoku?
- Wkrótce zajrzę do Node.js. Czy powinienem po prostu wykorzenić aspekt Codeignitera w ramach frameworka i przejść cały proces na Node.js?
Wszelkie wskazówki są mile widziane.
Więc mam kosza mój plik .htaccess i mają szkielet załadować pliku start.index? Kiedy zadzwonię do RESTFUL API w Codeigniter, czy framework uruchomi się (z autoloadami itp.) Przez wywołanie kontrolera? To jest główny problem, który mam problemy ze zrozumieniem. – Lowkase
Nie, nadal możesz zachować oba routery, ponieważ nie działają jednocześnie: Router szkieletowy będzie obsługiwał zmiany hashtagów (po stronie klienta, nie będziesz nawiązywał połączenia z serwerem), CodeIgniter będzie obsługiwać zmiany adresu URL (po stronie serwera) , zadzwoń na serwer - na pewno tylko twoje wywołania AJAX REST). Twoje wywołania REST będą musiały być routowane przez CodeIgniter (nigdy nie używane) RESTFUL API. – Loamhoof
@Lowkase Rozwiązanie proponowane przez Loamhoof jest całkowicie w porządku. Aby odpowiedzieć na twoje pytanie: wywołania REST API do CodeIgniter uruchomią autoloady framework'a. Codeigniter nie rozróżnia żądania GET od przeglądarki lub od Backbone .fetch(). Pytanie brzmi: dlaczego potrzebujesz routera CodeIgniter? Zrzuć widok części MVC Codeigniter'a i zastąp go w całości MV * kręgosłupa. Wszystkie routing odbywa się za pomocą routera Backbone z wyjątkiem pierwszego wywołania start.index.html, które ładuje twoje RequireJs/Backbone. –