Comments (14)
Ok it looks likes I found the cause for the non working examples and submitted the fix in PR #79
from pug.
Oh, thanks, indeed it was obsolete. I will try to improve examples someday with some other technologies. Your work is really much appreciated.
from pug.
No problem, my pleasure.
from pug.
Now I will try to see if I can make it work in the pet project, I am still failing with that 😞
from pug.
Thanks for your feedback, please give me the specificities of your project, the code that load Pug and the directories and files pathes.
from pug.
@kylekatarnls I eventually managed to get it work but the "issue" if we can call it such is that when you instantiate the pug renderer and you define a basedir
, such basedir
doesn't seem to be then prepended to the file name specified to be included, in other words to include a file I don't seem to be able to use path relative to basedir
. Moreover, but this is more like a feature request, there is no support for multiple include paths.
I hope that clarifies a bit more.
from pug.
We followed the Pug-js spec that is:
- if the path start with /, we use basedir and append the included/extended path after it;
- else we consider the path relative to the current pug file.
Maybe these examples can help:
#23 (comment)
from pug.
@kylekatarnls I am not referring to that but to the php part. Basically if I have:
$pug = new Pug(array(
'cache' => 'var/cache/pug',
'basedir' => 'path/to/pug/templates/',
'upToDateCheck' => false,
);
$pug->render('my-page.pug');
it doesn't worh but everything is fine if I do
$pug = new Pug(array(
'cache' => 'var/cache/pug',
'basedir' => 'path/to/pug/templates',
'upToDateCheck' => false,
);
$pug->render('path/to/pug/templates/my-page.pug');
from pug.
Indeed, basedir is not used this way, it's a template option for include and extend as it is in the original repository: https://github.com/pugjs/pug/search?utf8=%E2%9C%93&q=basedir
I recommand this approach:
// Get the templates directory relatively to the view renderer.
$templatesDirectory = __DIR__ . '/views';
$pug = new Pug(array(
'cache' => 'var/cache/pug',
// Pass it to basedir
'basedir' => $templatesDirectory,
'upToDateCheck' => false,
));
// Prefix render calls with it.
$pug->render($templatesDirectory . '/my-page.pug');
Note that you can also get it from pug:
$pug = new Pug(array(
'basedir' => __DIR__ . '/views',
));
$pug->render($pug->getOption('basedir') . '/my-page.pug');
from pug.
@kylekatarnls so to make it clear to me, that's only to be able to import file from a relative path to basedir
but render always need a absolute one?
from pug.
Like any PHP function (such as file_get_contents
), the relative pathes are relative to cwd
(current working directory), so this is the relative way to do it:
chdir(__DIR__ . '/views');
$pug = new Pug(array(
'basedir' => '.',
));
$pug->render('my-page.pug');
from pug.
Yeah I know that, what I meant is that basedir
option affect only files included via import
in a jade/pug template. Otherwise it's ignored if render
is invoked.
from pug.
Yes, and in my humble opinion it should stay that way as if we do the same with pugjs:
var pug = require('pug');
var html = pug.renderFile('test.pug', {
basedir: __dirname + '/views'
});
console.log(html);
The path called is __dirname + '/test.pug'
and not __dirname + '/views/test.pug'
from pug.
Got it, got it. It's fine I simply wanted to make sure I was on the same page, I don't mind which way it is once I know how it is intended to work. Thanks for the clarification.
from pug.
Related Issues (20)
- syntax error, unexpected 'idx' (T_STRING), expecting ';' HOT 1
- Support template literals HOT 1
- Undefined variable fatal error appears on quoted Vue.js variable HOT 13
- Ternary conditional operator fails with linebreak HOT 6
- read-only cache directory HOT 20
- Undefined variable when using mixin with concatenation HOT 3
- Accessing helper functions in a namespace HOT 4
- PHP 7.4 with Pug 2.7.5 minor correction HOT 3
- Compatibility problem with laracast HOT 4
- Interpolation does not support null coalescing operator HOT 4
- enable_profiler => true shows php notices (undefined index) HOT 5
- Apostrophe is escaped HOT 2
- Option to disable html minficiation HOT 1
- Bug when using combinaison of mixins with block in iteration
- Incompatibility with composer 2.0 HOT 1
- Tag Name error HOT 5
- PHP 8 support? HOT 3
- How do i convert back to HTML and keep the variable intact? HOT 1
- Deprecation warning in PHP 8.1 for null values HOT 1
- Pug 2.7.6 minor correction to avoid warning with block append usage HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pug.