有没有办法在命令行上获取带有当前规范URL的产品列表?
class Mage_Shell_UrlTest extends Mage_Shell_Abstract
{
public function run()
{
$productCollection = Mage::getResourceModel('catalog/product_collection')
->addStoreFilter()
->addUrlRewrite()
->addAttributeToSelect('*')
->setPageSize(10) // just for testing
->addFieldToFilter('visibility',Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
->addAttributeToFilter('status', array(
'eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED
));
Mage::getSingleton('cataloginventory/stock')
->addInStockFilterToCollection($productCollection);
foreach ($productCollection as $product) {
$url = $product->getUrlModel()->getUrl($product, array('_ignore_category' => true));
echo PHP_EOL . $url . PHP_EOL; // debug output
}
}
}
$shell = new Mage_Shell_UrlTest();
$shell->run();
Run Code Online (Sandbox Code Playgroud)
我用php -f magento/shell/urlTest.php运行它,这给了我这样的东西:
我有一个缓存文件夹,路径存储在一个环境变量中: $LOCAL_CACHE (export LOCAL_CACHE=/home/me/path/to/any/cache/folder)
现在,我想在.env文件中附加一些其他文件夹:
我的.env文件:
LOCAL_COMPOSER_DIR=${LOCAL_CACHE}/composer
LOCAL_NPM_DIR=${LOCAL_CACHE}/npm
LOCAL_BOWER_DIR=${LOCAL_CACHE}/bower
Run Code Online (Sandbox Code Playgroud)
我的docker_compose.yml看起来像这样:
version: '2'
services:
composer:
env_file: .env
image: composer/composer
volumes:
- ./src:${APP_ROOT}
- ${LOCAL_COMPOSER_DIR}:/composer
working_dir: ${APP_ROOT}
Run Code Online (Sandbox Code Playgroud)
当我启动服务时,docker-compose run composer instal. ...它停止并显示以下错误:ERROR: Named volume "$LOCAL_CACHE"/composer":/composer:rw" is used in service "composer" but no declaration was found in the volumes section.
我不确定,但是.env文件似乎不支持使用变量。
我的routes.php摘录:
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() {
Route::resource('posts', 'PostsController', [
'except' => ['show']
]);
Route::delete('posts/trash', [
'as' => 'posts.trash.empty',
'uses' => 'PostsController@emptyTrash'
]);
});
Run Code Online (Sandbox Code Playgroud)
我的PostsController.php摘录:
/**
* DELETE /admin/posts/{id}
*/
public function destroy($id)
{
// code
}
/**
* DELETE /admin/posts/trash
*/
public function emptyTrash()
{
// code
}
Run Code Online (Sandbox Code Playgroud)
问题是Laravel将DELETE /admin/posts/trash请求中的'trash'字符串混淆为{id}参数.因此,destroy()调用该方法而不是emptyTrash().为什么以及我能为此做些什么?