早上好, 我有一个关于在Drupal中使用Slim的问题:我在我的apache服务器中有一个用Drupal创建的现有网站项目。我的工作是在现有网站上添加另一部分,我决定在没有Drupal但使用Slim微框架(v2)的情况下工作。完成我的网站后,我在Drupal项目文件夹的根目录中创建了一个文件夹,我将我的网站放在这个文件夹中。
This is how the Drupal folder looks with the new folder。 (文件夹可能是脚本,misc,...和文件可能是.htaccess,index.php,...)
之后我尝试使用以下URL访问我的网站:http://www.thewebsite.com/MYNEWFOLDER/并将其重定向到我在route.php文件中添加的路径“/”:一切正常。
$app->get('/', function () use ($app){
MYCODE});
然后我尝试http://www.thewebsite.com/MYNEWFOLDER/admin,因为我还在route.php文件中添加了一个路径“/ admin”,但是不是访问网站的这一部分,而是将我重定向到drupal错误404页面上写着:'“MYNEWFOLDER / admin”未找到。'。
$app->get('/admin(/)', function (){
MYCODE});
我的问题是:如何告诉Drupal这个文件夹必须忽略MYNEWFOLDER以及如何在不被Drupal重定向的情况下访问http://www.thewebsite.com/MYNEWFOLDER/admin?
度过美好的一天!
(抱歉我的英文顺便说一下^^)
答案 0 :(得分:0)
Drupal 7和Slim 3:
使用Form API使用load参数创建路由: 您将需要将Drupal的http请求对象路由到Slim
require 'vendor/autoload.php';
function my_modulename_menu() {
$items['my/page/%my_modulename_somefunction'] = array(
'page arguments' => array(2),
'access arguments' => array('access content'),
return $items;
}
function my_modulename_somefunction_load($var) {
$app = new \Slim\App;
$request = request_path(); // set the Drupal request object here
if ($_SERVER['REQUEST_URI'] == "my/page/" . $var) {
$app->get('/my/page/{passed}', function ($request, $response, array $args) {
$stuff = $args['passed']
// do something with your data here
return $response->withJson($stuff);
});
$app->run();
exit;
}
}
这将输出/ my / page /之后传递给用户的所有信息,而与Drupals主题层无关,并且仅限于Drupal中的特定路径,而不会破坏您的Web服务器。
我是本单元的作者:
https://www.drupal.org/project/simple_slim_api
有关D7 Form API的其他文档,请参见:
https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7.x