• 27-01-2013, 16:05:30
    #1
    Şu sıralar spagetti kod yazmaktan vazgeçip MVC sistemine dönüş yapıyorum.

    Bunun için yaptığım bir çalışma da bir yere takıldım 3-4 gündür hala çözüme ulaştırabilmiş değilim.

    Şimdi gelelim soruna,
    Bootstrap isimli linkleri kontrol ettiğim bir class var bunun üzerinden link kontrolü yaparak gerekli yerlere yönlendirme yapıyorum.
    <?php 
    
    	Class Bootstrap {
    	
    		private $Here;
    		private $file;
    		private $controller;
    		private $error;
    		
    	
    	
    		public function __construct() {
    			
    			$this->bootControl();
    		
    		}
    	
    		private function bootControl() {
    		
    		  	$this->Here = $_GET["Here"];
    			if(empty($this->Here)) {
    				$this->callIndex();
    				return false;
    			}
    		
    			$this->Here = explode("/",$this->Here);
    			$this->file =  "controllers/".$this->Here[0].".php";
    			if(file_exists($this->file)) {
    			
    					require $this->file;
    				
    			}else {
    			
    				$this->showError();
    				return false;
    				
    			
    			}
    			$this->controller = new $this->Here[0];
    			if(isset($this->Here[2])) {
    			
    			$this->controller->{$this->Here[1]}($this->Here[2]);
    			
    			 }else {
    				if(isset($this->Here[1])) {
    				
    					if(method_exists($this->controller,$this->Here[1])) {
    					
    						$this->controller->{$this->Here[1]}();
    						
    					}else {
    					
    						$this->showError(1);
    					}
    					
    				
    				}
    			}
    		}
    		
    		private function callIndex() {
    		
    			require "controllers/index.php";
    			
    			$this->controller = new Index;
    		
    		
    		}
    		
    		private function showError($errorCode = false) {
    			
    			require "controllers/Error.php";
    			$this->error = new Error;
    			
    			switch($errorCode) {
    			
    				default;
    				$this->error->noClass();
    				break;
    				case 1;
    				$this->error->noMethod();
    				break;
    			
    			}
    		
    		
    		} 
    	
    	}
    
    
    ?>
    Örnek olarak ;
    www.siteadresi.com/sayfa/kategori/kategoriadi bu şekilde kontrol yaparak, sayfa classı içinde kategori methodunu çağırıyorum sonra da kategoriadı parametresini, şimdi bunun akabinde html classı yazdım ve html kodlarımı onun üzerinden yürütüyorum. Fakat herhangi bir dosyadan css, js gibi dosyaları çağırdığım da bunu da class mantığıyla algılayarak o dosyayı bana getirmiyor.

    Mesela siteadi.com/views/kategori/kategori.css bu şekilde çağırdığımda dosyayı algılamıyor bunu normal link gibi algılıyor ve dolayısı ile hata veriyor.
    Bununla ilgili htacces dosyamda şu şekilde ;
    RewriteEngine On
    RewriteCond %(REQUEST_FILENAME) !-d
    RewriteCond %(REQUEST_FILENAME) !-f
    RewriteRule ^(.+)$ index.php?Here=$1 [QSA,L]
    burada sorun nedir, sorunu nasıl aşabilirim anlayabilmiş değilim. Bilen / fikri olan varsa yazarsa çok sevinirim
  • 27-01-2013, 21:30:07
    #2
    base href verin
  • 27-01-2013, 22:05:22
    #3
    oophp adlı üyeden alıntı: mesajı görüntüle
    base href verin
    Üstadım dediğin yöntemi denedim fakat şöyle bir sıkıntı mevcut hala.

    Şimdi link yapısını, kontrol ettiğimiz için.

    siteadi.com/js/default.js dosyası mesela, bu dosyayı çekemiyorum çünkü burada js kısmını bir class olarak tanıyor ve böyle bir class yok diyor.
  • 28-01-2013, 09:04:03
    #4
    dosyaları nasıl çağırıyorsun ki?
  • 28-01-2013, 09:49:06
    #5
    CodeIgniter ile :

    RewriteRule ^$ /index.php [L]  
    RewriteCond $1 !^(index\.php|index.\html|_img|_css|_js|robots\.txt|favicon\.ico)  
    RewriteRule ^(.*)$ /index.php/$1 [L]
    bu şekilde bir kullanımla controller olmayan dosyaları tanımlıyorum. Tanımladığım dosya ve klasör ismi dışında her şey index.php'ye gidiyor.

    Senin de benzer şekilde controller olmayan herşeyi index.php?Here=$1 adresine göndermen gerekiyor.
  • 28-01-2013, 10:24:13
    #6
    hocam aynı şekilde bende kullanıyorum projelerimde bu yapıyı şu şekilde denermisin htaccess

    RewriteEngine on
    RewriteRule ^([^/]*)/$ index.php?Here=$1 [L]
    RewriteCond %{REQUEST_URI} /+[^.]+$
    RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

    büyük ihtimal olması lazım şuan bende bu şekilde kullanıyorum...

    ve birde baseUrl tanımlamayı unutma
  • 28-01-2013, 14:41:19
    #7
    Arkadaşlar teşekkürler deneyeceğim, bende çözebilmiş değilim hala niye böyle sıkıntı oluyor

    Maalesef arkadaşlar iki htacces kodu da işe yaramadı. Başka çözümler arayışındayım.