Slim是轻量级的PHP框架,而且扩展性比较好,可以方便的集成其它模块。不过Slim还是比较小众的,资料查找起来不是那么多。
使用Slim建站的时候,目录结构怎么设计?可以参考Laravel。Laravel是现在最流行的框架,对于新手过于复杂,学习曲线比较陡,但是其目录结构还是很有借鉴价值的!
这里有个问题,还没有搞明白:就是目录“vendor”里面存放的是Bootstrap、jquery等第三方库,这些库是由Composer管理和更新的,在实际使用中却需要放在“public”目录下,否则外部无法访问。
关于Slim的基本使用,网上可以搜到不少的,但是如何在模板文件中输出网站的root url,网上好像没有现成的答案。测试可行的解决方案如下
$container['view'] = function($container){
$view = new Slim\Views\Twig('..\app\views',['cache' => false]);
$request = $container->request;
$uri = $request->getUri();
$scheme= $uri->getScheme();
$host = $uri->getHost();
$port = $uri->getPort();
$baseUrl = $scheme."://".$host.":".$port."/";
$view->getEnvironment()->addGlobal('baseUrl',$baseUrl);
return $view;
};
参数解释如下
- $scheme: http
- $host:localhost
- port:80
而$view->getEnvironment()->addGlobal('baseUrl',$baseUrl);
将$baseUrl加入到Twig的全局变量中,那么就可以像下面这样的来引用.css、.js、图片等文件了。
<link rel="stylesheet" href="{{ baseUrl }}asset\twitter\bootstrap\dist\css\bootstrap.css" type="text/css">
<link rel="stylesheet" href="{{ baseUrl }}asset\twitter\bootstrap\dist\css\bootstrap-theme.css" type="text/css">
<link rel="stylesheet" href="{{ baseUrl }}asset\components\jqueryui\themes\smoothness\jquery-ui.css" type="text/css">
<link rel="stylesheet" href="{{ baseUrl }}asset\components\font-awesome\css\font-awesome.css" type="text/css">