我希望能够使用Joomla CMS中的cli功能从命令行以编程方式在Joomla中添加许多文章。
我基本上使用的是Create a Joomla! Article Programatically,但在创建了一篇带有错误行的文章之后,我的脚本就关闭了
显示错误页面时出错:应用程序实例化 错误:应用程序实例化错误
这是我在Joomla的/ cli文件夹中运行的代码。
我正在使用Joomla 3.4
struct B {
B();
B(B&&) = default; // Explicitly default the
B& operator=(B&&) = default; // move functions.
B(const B&) = delete; // Delete copy functions - Not strictly
B& operator=(const B&) = delete; // necessary but just to be explicit.
};
struct A {
std::vector<B> bs;
void add(B b){
bs.push_back(std::move(b));
}
B remove(std::vector<B>::iterator itr){
B tmp = std::move(*itr);
bs.erase(itr);
return tmp;
}
};
struct C {
A& a;
std::vector<B> bs;
C(A& a) : a(a) {}
~C(){
for (auto& b : bs) {
a.add(std::move(b));
}
} // bs will be deleted now anyway, no need to remove the dead objects
void add(B b){
bs.push_back(std::move(b));
}
B remove(std::vector<B>::iterator itr){
auto tmp = std::move(*itr);
bs.erase(itr);
return tmp;
}
};
int main() {
A a;
C c(a);
a.add(B());
auto tmp = a.remove(a.bs.begin());
c.add(std::move(tmp));
}
答案 0 :(得分:2)
我能够找到答案,因为它已经在github上被提出作为一个问题,所以我在这里发布了这个解决方案。
https://github.com/joomla/joomla-cms/issues/7028
如果命令行应用程序使用JTable,则需要注册这样的应用程序:
class MakeSql extends JApplicationCli
{
public function __construct()
{
parent::__construct();
JFactory::$application = $this; // this is necessary if using JTable
}
public function doExecute()
{
$db = JFactory::getDbo();
// ... etc etc ...
我这样做了,效果很好。