64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
<?php
 | 
						|
namespace app\controller;
 | 
						|
 | 
						|
 | 
						|
use app\model\Category;
 | 
						|
use app\model\Model;
 | 
						|
use app\model\SpecialRoute;
 | 
						|
 | 
						|
class Error extends BaseController
 | 
						|
{
 | 
						|
    protected $data = [];
 | 
						|
 | 
						|
    public function __call($method, $args)
 | 
						|
    {
 | 
						|
        //特殊路径处理
 | 
						|
        $specialRoute = SpecialRoute::findOneByUrl($this->request->baseUrl());
 | 
						|
        if(!empty($specialRoute)){
 | 
						|
            switch ($specialRoute["type"]){
 | 
						|
                case SpecialRoute::type_archives:
 | 
						|
                    return action("article/detail",["id"=>$specialRoute->relation_id]);
 | 
						|
                    break;
 | 
						|
                case SpecialRoute::type_archives_category:
 | 
						|
                    $category = Category::findInfoById($specialRoute->relation_id);
 | 
						|
                    if(empty($category)){
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                    switch ($category->model_id){
 | 
						|
                        case Model::MODEL_PRODUCT:
 | 
						|
                            return action("product/index",["id"=>$specialRoute->relation_id]);
 | 
						|
                            break;
 | 
						|
                        case Model::MODEL_ARTICLE:
 | 
						|
                            return action("article/index",["categoryId"=>$specialRoute->relation_id]);
 | 
						|
                            break;
 | 
						|
                        case Model::MODEL_PAGE:
 | 
						|
                            return action("page/index",["categoryId"=>$specialRoute->relation_id]);
 | 
						|
                            break;
 | 
						|
                    }
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        $this->data['seoTitle'] = '404';
 | 
						|
        return $this->redirect('/404.html');
 | 
						|
    }
 | 
						|
    
 | 
						|
    public function jump()
 | 
						|
    {
 | 
						|
        $param = request()->param();
 | 
						|
        return view()->assign($param);
 | 
						|
    }
 | 
						|
 | 
						|
    // 404
 | 
						|
    public function notFind()
 | 
						|
    {
 | 
						|
        $this->data['seoTitle'] = '404';
 | 
						|
        return view('error/404')->assign($this->data);
 | 
						|
    }
 | 
						|
 | 
						|
    // 500
 | 
						|
    public function serviceFail()
 | 
						|
    {
 | 
						|
        $this->data['seoTitle'] = '500';
 | 
						|
        return view('error/500')->assign($this->data);
 | 
						|
    }
 | 
						|
} |