要使用电子邮件,我只是
use Cake\Network\Email\Email;
$email = new Email();
但尝试使用UrlHelper是不成功的。
由于
不成功$url_helper = new UrlHelper;
因为它给了我
Argument 1 passed to Cake\View\Helper::__construct() must be an instance of Cake\View\View.
但我猜想,我不会拥有View in Shell。
感谢。
答案 0 :(得分:4)
在shell中使用帮助程序不是解决此问题的正确方法。帮助者也只是包裹the Router。所以直接使用路由器:
use Cake\Routing\Router;
$url = Router::url([/*...*/], true);
另请注意,您可以通过调用Router::fullBaseUrl()
根据需要更改基本网址,它是一个getter和setter。请参阅documentation。
这更好,因为:
答案 1 :(得分:-1)
你可能会按照类似的方法在shell中模拟一个帮助器,就像模拟一个帮助器进行单元测试一样。尝试:
<?php
use Cake\View\View;
use Cake\View\Helper\UrlHelper;
class FooShell extends Shell
{
public $url_helper = null;
public function bar()
{
$view = new View();
$this->url_helper = new UrlHelper($view);
// URL Helper functionality created here
}
}
以下是我用于mocking out a helper in CakePHP 3的文档。