You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/Web/Blog/articles/2024-11-25-alpha-4.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,7 +69,7 @@ This caching strategy comes with one additional requirement: it will only work w
69
69
<success>Done</success> 111 items cached
70
70
```
71
71
72
-
The same manual generation is now also required when deploying to production with full discovery cache enabled. You can read more about automating this process in [the docs](/main/getting-started/getting-started#about-discovery). Finally, if you're interested in some more behind-the-scenes info and benchmarks, you can check out [the GitHub issue](https://github.com/tempestphp/tempest-framework/issues/395#issuecomment-2492127638).
72
+
The same manual generation is now also required when deploying to production with full discovery cache enabled. You can read more about automating this process in [the docs](/main/getting-started/installation#about-discovery). Finally, if you're interested in some more behind-the-scenes info and benchmarks, you can check out [the GitHub issue](https://github.com/tempestphp/tempest-framework/issues/395#issuecomment-2492127638).
73
73
74
74
## Make Commands
75
75
@@ -113,7 +113,7 @@ trait HasConsole
113
113
}
114
114
```
115
115
116
-
You can read more about when and when not to use this feature [in the docs](/main/essentials/container/#injected-properties).
116
+
You can read more about when and when not to use this feature [in the docs](/main/essentials/container#injected-properties).
Copy file name to clipboardExpand all lines: src/Web/Blog/articles/2025-03-08-static-websites-with-tempest.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -134,4 +134,4 @@ On a final note, you can always clean up the generated HTML files by running `{c
134
134
<success>Done</success>
135
135
```
136
136
137
-
It's a pretty cool feature that requires minimal effort, but will have a huge impact on your website's performance. If you want more insights into Tempest's static pages, you can head over to [the docs](/main/2-tempest-in-depth/10-static-pages) to learn more.
137
+
It's a pretty cool feature that requires minimal effort, but will have a huge impact on your website's performance. If you want more insights into Tempest's static pages, you can head over to [the docs](/main/features/static-pages) to learn more.
Copy file name to clipboardExpand all lines: src/Web/Blog/articles/2025-03-13-request-objects-in-tempest.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -164,7 +164,7 @@ return new SQLiteConfig(
164
164
);
165
165
```
166
166
167
-
Next, create a migration. For the sake of simplicity I like to use raw SQL migrations. You can read more about them [here](/main/1-essentials/05-models#migrations). These are discovered as well, so you can place them wherever suits you:
167
+
Next, create a migration. For the sake of simplicity I like to use raw SQL migrations. You can read more about them [here](/main/essentials/database#migrations). These are discovered as well, so you can place them wherever suits you:
Copy file name to clipboardExpand all lines: src/Web/Documentation/content/main/1-essentials/01-routing.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -72,7 +72,7 @@ final readonly class AircraftController
72
72
73
73
### Route binding
74
74
75
-
In controller actions, you may want to receive an object instead of a scalar value such as an identifier. This is especially useful in the case of [models](/main/essentials/models) to avoid having to write the fetching logic in each controller.
75
+
In controller actions, you may want to receive an object instead of a scalar value such as an identifier. This is especially useful in the case of [models](./03-database.md#models) to avoid having to write the fetching logic in each controller.
Note that Tempest does not have named routes, and currently doesn't plan on adding them. However, if you have an argument for them, feel free to hop on our [Discord server](/discord) to discuss it.
154
+
Note that Tempest does not have named routes, and currently doesn't plan on adding them. However, if you have an argument for them, feel free to hop on our [Discord server](/discord){:ssg-ignore="true"} to discuss it.
155
155
:::
156
156
157
157
## Matching the current URI
@@ -181,7 +181,7 @@ A core pattern of any web application is to access data from the current request
181
181
182
182
In most situations, the data you expect to receive from a request is structured. You expect clients to send specific values, and you want them to follow specific rules.
183
183
184
-
The idiomatic way to achieve this is by using request classes. They are classes with public properties that correspond to the data you want to retrieve from the request. Tempest will automatically validate these properties using PHP's type system, in addition to optional [validation attributes](../1-tempest-in-depth/02-validation) if needed.
184
+
The idiomatic way to achieve this is by using request classes. They are classes with public properties that correspond to the data you want to retrieve from the request. Tempest will automatically validate these properties using PHP's type system, in addition to optional [validation attributes](../2-features/06-validation) if needed.
185
185
186
186
A request class must implement {`Tempest\Router\Request`} and should use the {`Tempest\Router\IsRequest`} trait, which provides the default implementation.
187
187
@@ -228,7 +228,7 @@ final readonly class AirportController
228
228
```
229
229
230
230
:::info A note on data mapping
231
-
The `map()` function is a powerful feature that sets Tempest apart. It allows mapping any data from any source into objects of your choice. You may read more about them in [their documentation](../1-tempest-in-depth/01-mapper).
231
+
The `map()` function is a powerful feature that sets Tempest apart. It allows mapping any data from any source into objects of your choice. You may read more about them in [their documentation](../2-features/01-mapper.md).
232
232
:::
233
233
234
234
### Retrieving data directly
@@ -348,7 +348,7 @@ final readonly class AircraftController
348
348
}
349
349
```
350
350
351
-
Tempest has a powerful templating system inspired by modern front-end frameworks. You may read more about views in their [dedicated chapter](./03-views).
351
+
Tempest has a powerful templating system inspired by modern front-end frameworks. You may read more about views in their [dedicated chapter](./02-views.md).
352
352
353
353
### Using built-in response classes
354
354
@@ -471,7 +471,7 @@ final readonly class JsonController
471
471
472
472
There are some situations in which you may need to act on a response right before it is sent to the client. For instance, you may want to display custom error error pages when an exception occurred, or redirect somewhere instead of displaying the [built-in HTTP 404](/hello-from-the-void){:ssg-ignore="true"} page.
473
473
474
-
This may be done using a response processor. Similar to [view processors](./03-views#pre-processing-views), they are classes that implement the {`Tempest\Response\ResponseProcessor`} interface. In the `process()` method, you may mutate and return the response object:
474
+
This may be done using a response processor. Similar to [view processors](./02-views.md#pre-processing-views), they are classes that implement the {`Tempest\Response\ResponseProcessor`} interface. In the `process()` method, you may mutate and return the response object:
475
475
476
476
```php src/ErrorResponseProcessor.php
477
477
use function Tempest\view;
@@ -555,7 +555,7 @@ Task deferring only works if [`fastcgi_finish_request()`](https://www.php.net/ma
555
555
556
556
## Testing
557
557
558
-
Tempest provides a router testing utility accessible through the `http` property of the [`IntegrationTest`](https://github.com/tempestphp/tempest-framework/blob/main/src/Tempest/Framework/Testing/IntegrationTest.php) test case. You may learn more about testing in the [dedicated chapter](./07-testing).
558
+
Tempest provides a router testing utility accessible through the `http` property of the [`IntegrationTest`](https://github.com/tempestphp/tempest-framework/blob/main/src/Tempest/Framework/Testing/IntegrationTest.php) test case. You may learn more about testing in the [dedicated chapter](./07-testing.md).
559
559
560
560
The router testing utility provides methods for all HTTP verbs. These method return an instance of [`TestResponseHelper`](https://github.com/tempestphp/tempest-framework/blob/main/src/Tempest/Framework/Testing/Http/TestResponseHelper.php), giving access to multiple assertion methods.
Copy file name to clipboardExpand all lines: src/Web/Documentation/content/main/1-essentials/02-views.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ Inside, a `x-post` [component](#view-components) is rendered multiple times than
42
42
43
43
## Rendering views
44
44
45
-
As specified in the documentation about [sending responses](./02-controllers#view-responses), views may be returned from controller actions using the `{php}view` function. This function is a shorthand for instantiating a {`Tempest\View\View`} object.
45
+
As specified in the documentation about [sending responses](./01-routing.md#view-responses), views may be returned from controller actions using the `{php}view` function. This function is a shorthand for instantiating a {`Tempest\View\View`} object.
46
46
47
47
```php app/AircraftController.php
48
48
use Tempest\Router\Get;
@@ -458,7 +458,7 @@ Iconify has a large collection of icon sets, which you may browse using the [Ic
458
458
459
459
### `x-vite-tags`
460
460
461
-
Tempest has built-in support for [Vite](https://vite.dev/), the most popular front-end development server and build tool. You may read more about [asset bundling](./04-asset-bundling) in the dedicated documentation.
461
+
Tempest has built-in support for [Vite](https://vite.dev/), the most popular front-end development server and build tool. You may read more about [asset bundling](../2-features/05-asset-bundling.md) in the dedicated documentation.
462
462
463
463
This component simply inject registered entrypoints where it is called.
464
464
@@ -514,7 +514,7 @@ Tempest views are always compiled to plain PHP code before being rendered. Durin
514
514
{:hl-property:VIEW_CACHE:}={:hl-keyword:true:}
515
515
```
516
516
517
-
During deployments, that cache must be cleared in order to not serve outdated views to users. You may do that by running `tempest view:clear` on every deploy. You can read more about caching and view caching in [the cache chapter](../1-tempest-in-depth/04-caching).
517
+
During deployments, that cache must be cleared in order to not serve outdated views to users. You may do that by running `tempest view:clear` on every deploy.
518
518
519
519
## Using other engines
520
520
@@ -615,7 +615,7 @@ return new ViewConfig(
615
615
616
616
#### Initializing your engine
617
617
618
-
The renderer will be called every time a view is rendered. If your engine has an initialization step, it may be a good idea to use a singleton [initializer](../1-essentials/01-container#dependency-initializers) to construct it.
618
+
The renderer will be called every time a view is rendered. If your engine has an initialization step, it may be a good idea to use a singleton [initializer](../1-essentials/05-container.md#dependency-initializers) to construct it.
619
619
620
620
As an example, here is a simplified version of the initializer that creates the `Blade` object, used by the Blade renderer:
Copy file name to clipboardExpand all lines: src/Web/Documentation/content/main/1-essentials/03-database.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ The ORM is currently experimental and is not covered by our backwards compatibil
10
10
11
11
## Overview
12
12
13
-
Tempest provides a database abstraction layer with support for PostgreSQL, MySQL and SQLite. Querying the database can be done using [raw SQL](#querying-the-database) or [our query builder](#database-persistence).
13
+
Tempest provides a database abstraction layer with support for PostgreSQL, MySQL and SQLite. Querying the database can be done using [raw SQL](#querying-the-database) or [our query builder](#non-object-models).
14
14
15
15
Additionally, [database models](#models) are completely decoupled from the ORM.
Copy file name to clipboardExpand all lines: src/Web/Documentation/content/main/1-essentials/05-container.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ Tempest has a dependency container capable of resolving dependencies without any
11
11
12
12
## Injecting dependencies
13
13
14
-
The constructors of classes resolved by the container may be any class or interface associated with a [dependency initializer](#dependency-initializers). Similarly, invoked methods such as [event handlers](../2-tempest-in-depth/07-events), [console commands](../3-console/02-building-console-commands) and invokable classes may also be called directly from the container.
14
+
The constructors of classes resolved by the container may be any class or interface associated with a [dependency initializer](#dependency-initializers). Similarly, invoked methods such as [event handlers](../2-features/08-events.md), [console commands](../3-console/02-building-console-commands) and invokable classes may also be called directly from the container.
Some components implement the {`Tempest\Container\HasTag`} interface, which requires a `tag` property. Singletons using this interface are tagged by the `tag` property, essentially providing the ability to have dynamic tags.
290
290
291
-
This is specifically useful to get multiple instances of the same configuration. This is how [multiple database connections support](../1-features/05-database.md#using-multiple-connections) is implemented.
291
+
This is specifically useful to get multiple instances of the same configuration. This is how [multiple database connections support](../1-essentials/03-database.md#using-multiple-connections) is implemented.
Copy file name to clipboardExpand all lines: src/Web/Documentation/content/main/1-essentials/07-testing.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,11 +8,11 @@ keywords: ["phpunit", "pest"]
8
8
9
9
Tempest uses [PHPUnit](https://phpunit.de) for testing and provides an integration through the [`Tempest\Framework\Testing\IntegrationTest`](https://github.com/tempestphp/tempest-framework/blob/main/src/Tempest/Framework/Testing/IntegrationTest.php) test case. This class boots the framework with configuration suitable for testing, and provides access to multiple utilities.
10
10
11
-
Testing utilities specific to components are documented in their respective chapters. For instance, testing the router is described in the [routing documentation](./02-controllers#testing).
11
+
Testing utilities specific to components are documented in their respective chapters. For instance, testing the router is described in the [routing documentation](./01-routing.md#testing).
12
12
13
13
## Running tests
14
14
15
-
If you created a Tempest application through the [recommended installation process](../0-getting-started/01-getting-started#installation), you already have access to `tests/IntegrationTestCase`, which your application tests can inherit from.
15
+
If you created a Tempest application through the [recommended installation process](../0-getting-started/02-installation.md), you already have access to `tests/IntegrationTestCase`, which your application tests can inherit from.
16
16
17
17
In this case, you may use the `composer phpunit` command to run your test suite.
Copy file name to clipboardExpand all lines: src/Web/Documentation/content/main/2-features/02-file-storage.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ return new S3StorageConfig(
26
26
27
27
In this example, the S3 credentials are specified in the `.env`, so a different bucket and credentials can be configured depending on the environment.
28
28
29
-
Once your storage is configured, you may interact with it by using the {`Tempest\Storage\Storage`} interface. This is usually done through [dependency injection](../1-features/01-container.md#injecting-dependencies):
29
+
Once your storage is configured, you may interact with it by using the {`Tempest\Storage\Storage`} interface. This is usually done through [dependency injection](../1-essentials/05-container.md#injecting-dependencies):
0 commit comments