quarkiverse / quarkus-renarde

Server-side Web Framework with Qute templating, magic/easier controllers, auth, reverse-routing
Apache License 2.0
73 stars 16 forks source link

Get current URI in template #196

Closed jniedersuess closed 5 months ago

jniedersuess commented 5 months ago

Hi, is there a way to obtain the current uri in a template so that i use it in an {#if} statement for example?

FroMage commented 5 months ago

Not at the moment, no. Why would you want that? I'm curious about the use-case, because in a view for Application.index() you can use {uri:Application.index()} to get the URI, and all views know what controller they correspond to.

Is it for a tag, or for a main composited template?

jniedersuess commented 5 months ago

Thx for the quick response. Its for the main template. I have a sidebar where i want to style the link to the current page highlighted. But passing an extra parameter on every view seems a bit over the top. In Django there is the request object that has methods like {{ request.path } and {{ request.build_absolute_uri }}

jniedersuess commented 5 months ago

Of course it can be done with a little JS also ..

FroMage commented 5 months ago

Would 4e01f69 be enough for you?

jniedersuess commented 5 months ago

Yeah that looks like it would work perfectly for my usecase 👍 :)

FroMage commented 5 months ago

Great!

jniedersuess commented 5 months ago

Wow that was fast. Thank you so much :)

FroMage commented 5 months ago

3.0.9 should be released for you to try. Thanks for reporting this!

jniedersuess commented 5 months ago

I tried to upgrade my version from 3.0.7 to the new 3.0.9 version and also afterwards to 3.0.8 and got errors in both versions somehow. I dont use tags in my project so the error doesn't make much sense to me ..

2024-02-06 17:00:21,682 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors [error]: Build step io.quarkus.qute.deployment.QuteProcessor#processTemplateErrors threw an exception: io.quarkus.qute.TemplateException: Found incorrect expressions (2): [1] tags/form.html:1:64 - {_args.skipIt().skip('method').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method [2] tags/gravatar.html:1:88 - {_args.skipIt().skip('size').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method

at io.quarkus.qute.deployment.QuteProcessor.processTemplateErrors(QuteProcessor.java:261)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Suppressed: io.quarkus.qute.TemplateException: tags/form.html:1:64 - {_args.skipIt().skip('method').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method
    at io.quarkus.qute.TemplateException$Builder.build(TemplateException.java:169)
    at io.quarkus.qute.deployment.QuteProcessor.processTemplateErrors(QuteProcessor.java:238)
    ... 9 more
Suppressed: io.quarkus.qute.TemplateException: tags/gravatar.html:1:88 - {_args.skipIt().skip('size').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method
    at io.quarkus.qute.TemplateException$Builder.build(TemplateException.java:169)
    at io.quarkus.qute.deployment.QuteProcessor.processTemplateErrors(QuteProcessor.java:238)
    ... 9 more

at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:334)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:251)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:60)
at io.quarkus.deployment.dev.IsolatedDevModeMain.firstStart(IsolatedDevModeMain.java:112)
at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:433)
at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:55)
at io.quarkus.bootstrap.app.CuratedApplication.runInCl(CuratedApplication.java:138)
at io.quarkus.bootstrap.app.CuratedApplication.runInAugmentClassLoader(CuratedApplication.java:93)
at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:131)
at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:62)

Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors [error]: Build step io.quarkus.qute.deployment.QuteProcessor#processTemplateErrors threw an exception: io.quarkus.qute.TemplateException: Found incorrect expressions (2): [1] tags/form.html:1:64 - {_args.skipIt().skip('method').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method [2] tags/gravatar.html:1:88 - {_args.skipIt().skip('size').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method

at io.quarkus.qute.deployment.QuteProcessor.processTemplateErrors(QuteProcessor.java:261)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Suppressed: io.quarkus.qute.TemplateException: tags/form.html:1:64 - {_args.skipIt().skip('method').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method
    at io.quarkus.qute.TemplateException$Builder.build(TemplateException.java:169)
    at io.quarkus.qute.deployment.QuteProcessor.processTemplateErrors(QuteProcessor.java:238)
    ... 9 more
Suppressed: io.quarkus.qute.TemplateException: tags/gravatar.html:1:88 - {_args.skipIt().skip('size').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method
    at io.quarkus.qute.TemplateException$Builder.build(TemplateException.java:169)
    at io.quarkus.qute.deployment.QuteProcessor.processTemplateErrors(QuteProcessor.java:238)
    ... 9 more

at io.quarkus.builder.Execution.run(Execution.java:123)
at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:160)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:330)
... 9 more

Caused by: io.quarkus.qute.TemplateException: Found incorrect expressions (2): [1] tags/form.html:1:64 - {_args.skipIt().skip('method').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method [2] tags/gravatar.html:1:88 - {_args.skipIt().skip('size').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method

at io.quarkus.qute.deployment.QuteProcessor.processTemplateErrors(QuteProcessor.java:261)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Suppressed: io.quarkus.qute.TemplateException: tags/form.html:1:64 - {_args.skipIt().skip('method').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method
    at io.quarkus.qute.TemplateException$Builder.build(TemplateException.java:169)
    at io.quarkus.qute.deployment.QuteProcessor.processTemplateErrors(QuteProcessor.java:238)
    ... 9 more
Suppressed: io.quarkus.qute.TemplateException: tags/gravatar.html:1:88 - {_args.skipIt().skip('size').asHtmlAttributes}: Property/method [skipIt()] not found on class [io.quarkus.qute.UserTagSectionHelper$Arguments] nor handled by an extension method
    at io.quarkus.qute.TemplateException$Builder.build(TemplateException.java:169)
    at io.quarkus.qute.deployment.QuteProcessor.processTemplateErrors(QuteProcessor.java:238)
    ... 9 more
FroMage commented 5 months ago

You need to use the latest Quarkus version as well

jniedersuess commented 5 months ago

Ah my bad... works like a charm now :) merci beaucoup!!