В SilverStripe вы можете получить доступ к любому маршруту, доступному через HTTP, также запустив cli-script.php в командной строке
Там также sake
который только Баш оберткой CLI-script.php (но ради должен быть установлен)
так, из директории вашего проекта, вы можете запустить обе команды, которые будут выполнять те же действия (в этот случай, запустить Dev/сборки):
php framework/cli-script.php dev/build
sake dev/build
увидеть документы для командной строки ussage из SilverStripe: http://doc.silverstripe.org/framework/en/topics/commandline
2-ая часть вашего вопроса (как вызвать метод от сети переменного тока ontroller) на самом деле больше вопрос о маршрутизации в silverstripe и не имеет никакого отношения к тому, как он называется (cronjob)
Я предполагаю, что ваш контроллер является Page_Controller или подкласс этого (так привязанный к SiteTree Model) то для вас выполняется маршрутизация (для URL-адресов, установленных в CMS). так что позволяет увидеть некоторые примеры кода и позволяет предположить, у вас есть страница с URLSegment about
:
class Page_Controller extends ContentController {
private static $allowed_actions = array('something');
public function init() {
// the init method will run before every action
// this means this code will run, no matter if you visit /about or /about/something
}
public function index() {
// this is the default action (this code is optional and can be removed),
// and will be called if you visit website.com/about
return $this;
}
public function something() {
// this is the somethingaction,
// and will be called if you visit website.com/about/something
// do something here
return $this;
}
}
вы можете вызова работать, чтобы получить результат index()
:
php framework/cli-script.php about
и это, чтобы получить результат something()
:
php framework/cli-script.php about/something
ПРИМЕЧАНИЕ: INIT встретились hod сам не доступен по URL-адресу, это «настройка», которая выполняется до начала действия.
ПРИМЕЧАНИЕ: все действия, отличные от index()
, должны быть разрешены путем добавления их в $allowed_actions
(также обратите внимание, что вам необходимо? flush = 1 после добавления в $allowed_actions
перезагрузить кэш конфигурации)
EDIT: это было на самом деле ответ на ваш первый вопрос, после того, как видеть ваш пример кода, это дополнение:
для автономных контроллеров это работает точно так же, просто вам нужно определить маршруты и убедиться, что у вас есть $Action
в r чтобы something()
можно было бы назвать
hi zauberfisch, я попытался запустить dev/build через ssh-терминал, как вы сказали выше, но я получаю следующую ошибку:> X-Powered-By: PHP/4.4.9 Тип контента: текст/html
ошибка синтаксического анализа: ошибка синтаксиса, неожиданный T_OBJECT_OPERATOR в _testpage/рамочный/ядра/core.php на линии
', если я использую/USR/местные/бен/php54 ... я застревают на входе сообщение, и если я использую php-cli. putty сообщает мне, что команда не найдена – invictus
ну, первое сообщение об ошибке, очевидно, является ошибкой из-за низкой версии php. использование новой версии php, как вы делали с php54, является решением. Но я не понимаю, что вы подразумеваете под «застряли в сообщении для входа» – Zauberfisch
, если страница не находится в режиме dev. Я получаю следующий вывод -> http://www.sspaste.com/paste/show/5256860510ca9 Я думаю Мне нужно как-то войти в систему, но как? – invictus