typo3 php 文件在 public 文件夹访问控制器功能
typo3 php file in public folder access controller function
是否可以从基于 resource/public/php/file.php
的 php 文件访问控制器功能
我想要的是这个 php 文件是特殊文件 我用它来做这个:
<img src="file.php"></img>
我将禁用可读路径。所以这个 php 文件做了一些加密并且需要连接到正常的控制器功能。
谢谢
is there any posibillity to access a controller function from a php file that is based in resource/public/php/file.php
是的,这是可能的,但因此您还需要 bootstrap
TYPO3 核心。或者,如果它是 static
和 public
方法,那么您可以直接调用它。
但在你的情况下这似乎不是正确的方法。
假设您正在处理某种验证码,您应该考虑使用自己的 page type
来呈现 dynamic images
。这是一个工作示例:
TypoScript 设置
在 TypoScript 中,我们正在注册我们自己的 page typ
并将其指向我们的 extension
、controller
和 action
:
DynamicCaptchaImage = PAGE
DynamicCaptchaImage {
typeNum = 1234
10 = USER_INT
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
pluginName = Pi1
extensionName = MyExtName
vendorName = MyCompanyName
controller = MyExtbaseController
action = renderCaptchaImage
# view =< plugin.tx_myextname.view // you provide the view yourself
# persistence =< plugin.tx_myextname.persistence // in case you need a repository you should uncomment it
settings =< plugin.tx_myextname.settings
}
config {
disableAllHeaderCode = 1
additionalHeaders = Content-Type: image/png
xhtml_cleaning = 0
admPanel = 0
debug = 0
}
}
另请参阅:Registering a custom typeNum-based Controller access
控制器
这是您的 controller
和 action
的示例:
<?php
namespace MyCompanyName\MyExtName\Controller;
/**
* MyExtbaseController
*/
class MyExtbaseController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
/**
* Render Captcha Image Action
*
* @return void
*/
public function renderCaptchaImageAction() {
// Send some headers
header('Content-Type: image/png');
// < do your magic stuff here >
// Breaks the script because we've sent already some headers and want
// to prevent that TYPO3 is adding another stuff (eg. for debugging purposes)
// that can break the image from loading.
// return FALSE; does not stop doing that!
exit;
}
}
另请参阅:Extbase wiki
访问控制器
现在我们已经配置了自定义 page type
我们可以通过调用 TypoScript 设置中给出的 page type
来访问控制器。
例如。 http://www.example.com?type=1234指向MyExtbaseController
中的renderCaptchaImageAction()
。
流体
在 Fluid 中,您可以 link 到您配置的 page type
:
<img src="{f:link.page(pageType: 1234)}" />
另请参阅:Fluid wiki
真实网址
如果您使用的是扩展程序 realurl
,您可以通过以下方式将 ?type=1234
更改为 captcha.png
:
// [...]
'fileName' => array(
'index' => array(
'captcha.png' => array(
'keyValues' => array(
'type' => 1234,
),
),
),
),
// [...]
另请参阅:Realurl wiki
是否可以从基于 resource/public/php/file.php
的 php 文件访问控制器功能我想要的是这个 php 文件是特殊文件 我用它来做这个:
<img src="file.php"></img>
我将禁用可读路径。所以这个 php 文件做了一些加密并且需要连接到正常的控制器功能。
谢谢
is there any posibillity to access a controller function from a php file that is based in resource/public/php/file.php
是的,这是可能的,但因此您还需要 bootstrap
TYPO3 核心。或者,如果它是 static
和 public
方法,那么您可以直接调用它。
但在你的情况下这似乎不是正确的方法。
假设您正在处理某种验证码,您应该考虑使用自己的 page type
来呈现 dynamic images
。这是一个工作示例:
TypoScript 设置
在 TypoScript 中,我们正在注册我们自己的 page typ
并将其指向我们的 extension
、controller
和 action
:
DynamicCaptchaImage = PAGE
DynamicCaptchaImage {
typeNum = 1234
10 = USER_INT
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
pluginName = Pi1
extensionName = MyExtName
vendorName = MyCompanyName
controller = MyExtbaseController
action = renderCaptchaImage
# view =< plugin.tx_myextname.view // you provide the view yourself
# persistence =< plugin.tx_myextname.persistence // in case you need a repository you should uncomment it
settings =< plugin.tx_myextname.settings
}
config {
disableAllHeaderCode = 1
additionalHeaders = Content-Type: image/png
xhtml_cleaning = 0
admPanel = 0
debug = 0
}
}
另请参阅:Registering a custom typeNum-based Controller access
控制器
这是您的 controller
和 action
的示例:
<?php
namespace MyCompanyName\MyExtName\Controller;
/**
* MyExtbaseController
*/
class MyExtbaseController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
/**
* Render Captcha Image Action
*
* @return void
*/
public function renderCaptchaImageAction() {
// Send some headers
header('Content-Type: image/png');
// < do your magic stuff here >
// Breaks the script because we've sent already some headers and want
// to prevent that TYPO3 is adding another stuff (eg. for debugging purposes)
// that can break the image from loading.
// return FALSE; does not stop doing that!
exit;
}
}
另请参阅:Extbase wiki
访问控制器
现在我们已经配置了自定义 page type
我们可以通过调用 TypoScript 设置中给出的 page type
来访问控制器。
例如。 http://www.example.com?type=1234指向MyExtbaseController
中的renderCaptchaImageAction()
。
流体
在 Fluid 中,您可以 link 到您配置的 page type
:
<img src="{f:link.page(pageType: 1234)}" />
另请参阅:Fluid wiki
真实网址
如果您使用的是扩展程序 realurl
,您可以通过以下方式将 ?type=1234
更改为 captcha.png
:
// [...]
'fileName' => array(
'index' => array(
'captcha.png' => array(
'keyValues' => array(
'type' => 1234,
),
),
),
),
// [...]
另请参阅:Realurl wiki